`

View 相关

 
阅读更多

 

转载文字http://hunankeda110.iteye.com/blog/890829 

 

surfaceView 与View 的区别

如果你的游戏不吃CPU,用View就比较好,符合标准Android操作方式,由系统决定刷新surface的时机。
但如果很不幸的,你做不到不让你的程序吃CPU,你就只好使用SurfaceView来强制刷新surface了,不然系统的UI进程很可能抢不过你那些吃CPU的线程。

当然其实不止这两种方法来刷新Surface的,这两种只是纯java应用比较常见的方法。

SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。
那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。

当使用surfaceView 由于是在新的线程中更新画面所以不会阻塞你的UI主线程。但这也带来了另外一个问题,就是事件同步。比如你触屏了一下,你需要surfaceView中thread处理,一般就需要有一个event queue的设计来保存touch event,这会稍稍复杂一点,因为涉及到线程同步。

所以基于以上,根据游戏特点,一般分成两类。

1 被动更新画面的。比如棋类,这种用view就好了。因为画面的更新是依赖于 onTouch 来更新,可以直接使用 invalidate。 因为这种情况下,这一次Touch和下一次的Touch需要的时间比较长些,不会产生影响。

2 主动更新。比如一个人在一直跑动。这就需要一个单独的thread不停的重绘人的状态,避免阻塞main UI thread。所以显然view不合适,需要surfaceView来控制。

 

 

View  自定义 :

使用自定义View的两种基本方法

1 java代码:  setContentView(new HelloView(this)); 缺乏灵活

2   xml 布局 :<com.test.HelloView

                 属性

  1. android:layout_width="fill_parent"  
  2.         android:layout_height="wrap_content"   
  3.         my:textColor="#"   
  4.         my:textSize="22dp"  

                 />

     2.1 <?xml version="1.0" encoding="utf-8"?>

<resources>

<declare-styleable name="MyView">

<attr name="textColor" format="color"/>

<attr name="textSize" format="dimension"/>

</declare-styleable>

</resources>

 

   2.2 构造函数

 

 

  1.  public MyView(Context context, AttributeSet attrs){  
  2.         super(context, attrs);  
  3.         mPaint = new Paint();  
  4.         //TypedArray是一个用来存放由context.obtainStyledAttributes获得的属性的数组  
  5.         //在使用完成后,一定要调用recycle方法  
  6.         //属性的名称是styleable中的名称+“_”+属性名称  
  7.         TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);  
  8.         int textColor = array.getColor(R.styleable.MyView_textColor, 0XFF00FF00); //提供默认值,放置未指定  
  9.         float textSize = array.getDimension(R.styleable.MyView_textSize, 36);  
  10.         mPaint.setColor(textColor);  
  11.         mPaint.setTextSize(textSize);  
  12.           
  13.         array.recycle(); //一定要调用,否则这次的设定会对下次的使用造成影响  
  14.     }  

 

 

分享到:
评论

相关推荐

    sjq.rar_SYSTEMVIEW_sjq_systemview 相关_滑动相关_相关器

    本压缩包文件"sjq.rar"包含了与SystemView相关的材料,特别是关于"滑动相关器"的资料,这是SystemView中一个重要的分析组件。 滑动相关器是SystemView用于追踪和分析系统中不同事件之间关系的一种工具。在实时系统...

    全面的Android view相关知识汇总整理

    以下是对"全面的Android view相关知识汇总整理"的详细解读: 1. **View的滑动方式** - `layout(left, top, right, bottom)`:直接修改View的坐标来改变位置。 - `offsetLeftAndRight()`和`offsetTopAndBottom()`...

    systemview简介及实例

    SystemView简介及实例 SystemView是一款功能强大的仿真软件,能够进行动态系统设计与仿真,提供了多种信号源、接收端、操作符和功能块,满足从DSP、通讯信号处理到控制和数学模型的应用需求。 1\. 动态系统设计与...

    swift-FQScreenShot一句代码保存截图将View相关的页面保存为图片

    FQScreenShot 一句代码保存截图,将View相关的页面保存为图片,支持 UIView,UIScrollView,UITableView,UICollectionView,UIWebView,WKWebView。支持iOS11

    SystemView_FreeRTOSV10_V252a_SYSTEMVIEW_freertos_freertossystemv

    1. **配置FreeRTOS**: 在FreeRTOS源码中,需要包含SystemView相关的头文件,并启用相应的配置选项,如`configUSE_SYSVIEW`。 2. **编译SystemView库**: 将SystemView的源码编译为库文件,通常会生成一个`.a`或`.lib...

    QlikView Notepad++ Plugin

    点击它,你将发现一系列与QlikView相关的功能。例如,“Open QlikView File”可以让你直接在Notepad++中打开QlikView工作簿,而“Check Syntax”则会检查你当前编辑的脚本是否有语法错误。 使用QlikView Notepad++...

    anyview上机通过答案

    本话题聚焦于“Anyview上机通过答案”,这可能是指在进行Anyview相关的实践操作或考试时,提供的一系列解答或解决方案。下面我们将深入探讨与Anyview使用、功能和可能遇到的问题相关的知识点。 1. **Anyview基础...

    自定义View源代码

    下面将详细解释与自定义View相关的知识点,并结合TopBar文件进行分析。 1. **自定义View的基本步骤**: - 创建一个新的Java类,继承自Android的基础View类,如View、LinearLayout、RelativeLayout等。 - 在`...

    Android-老外的自定义View面试题实现篇

    通过理解和实践这些知识点,开发者能够更好地应对面试中的自定义View相关问题,并在实际项目中创造出独特且高效的用户界面组件。在学习"SimpleCoverflow-master"这个项目时,可以深入理解如何利用Android的图形绘制...

    driver monitor,debugview

    1. dbgmsgcfg.dll:这可能是一个动态链接库文件,用于配置或支持DebugView相关的调试消息处理。DLL文件是Windows操作系统中用于实现代码共享和模块化的组件。 2. Dbgview.exe:这是DebugView的主要可执行文件,用户...

    SystemView实例

    - 在开发板项目中添加SystemView相关的库文件。 - 配置SystemView采集频率等参数。 - 启用SystemView功能,并设置调试接口(通常为USB串口)。 3. **数据采集与分析**: - 运行SystemView软件,连接开发板。 -...

    Mastering QlikView

    Redmond不仅仅是QlikView和Qlik Sense方面的专家,他还著有多本与QlikView相关的书籍,例如《QlikView开发者食谱》以及《QlikView服务器与发布者》。他在CRM领域有丰富的经验,并且是SalesLogix开发者的DevLogix系列...

    VMware_Horizon_View_6.1规划及测试案例

    - **新建View所用OU及用户**:在AD DS中创建组织单位(OU)来存储View相关的对象,并创建用户账户。 - **添加DHCP角色和配置**:安装并配置DHCP服务,以便自动分配IP地址给虚拟机。 - **导入管理View的组策略**:...

    wordview_cn2003_XiaZaiBa.zip

    描述中的“wordview_cn2003_XiaZaiBa.zip”重复了标题信息,进一步确认这确实是一个与WordView相关的中文资源包,可能包含了安装文件和其他辅助文档。 标签“wordview”是这个压缩包的关键标识,它强调了这个文件的...

    解析 json和格式化json的JsonView工具

    "JsonViewerPackage"可能是一个包含所有JsonView相关组件的打包文件,便于安装和部署。"Fiddler"是一个网络调试工具,它可以捕获和分析HTTP流量,与JsonView结合使用,可以帮助开发者在请求和响应中查看和解析JSON...

    PDFView显示pdf文件

    在Android应用中,可以调用PDFView的相关方法来打开本地存储或者放在assets目录下的PDF文件。assets目录是Android项目中存放非资源文件的一个特殊位置,通常用来存储需要在运行时读取的数据,如PDF、JSON文件等。 ...

    HDFView-2.14-win_64最新版HDFView

    README.txt文件通常包含有关软件的使用说明、版本信息和可能的更新日志,用户在遇到问题时可以查阅。 总之,HDFView作为一款强大的数据查看和管理工具,对于HDF5和Tensorflow用户来说是不可或缺的。它简化了数据的...

    HexView资源-Vector

    接下来,我们详细讨论与HexView和矢量数据相关的知识点: 1. **十六进制查看器**:十六进制查看器是一种工具,它可以显示文件的原始二进制数据,每个字节以十六进制数值的形式呈现,并且通常会有一列对应的ASCII...

Global site tag (gtag.js) - Google Analytics