您的位置:首页 > 移动开发 > Android开发

[Android基础知识] 之十一: View类的原理与使用

2015-05-21 15:51 330 查看
原理方面,可以看这篇文章:<<Android视图绘制流程完全解析,带你一步步深入了解View(二)>>。里面详细介绍了在调用OnMeasure()和OnLayout()之后(这二者一个是机器屏幕尺寸测量,一个是负责UI元素布局),onDraw()就开始工作了,事实上这时才真正地开始对视图进行绘制。ViewRoot中的代码会继续执行并创建出一个Canvas对象,然后调用View的draw()方法来执行具体的绘制工作。draw()方法内部的绘制过程总共可以分为六步,该文对其中重要步骤进行了详细介绍。

原文连接:http://my.oschina.net/xwy/blog/203198

这篇《Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)》讲解了androdi上view类里如何画图。

连接:http://blog.csdn.net/rhljiayou/article/details/7212620

这篇《Android中View绘制流程以及invalidate()等相关方法分析》直接讲解了invalidate()方法
的使用,及其工作流程。
说明:请求重绘View树,即draw()过程,假如视图发生大小没有变化就不会调用layout()过程,并且只绘制那些“需要重绘的”视图,即谁(View的话,只绘制该View ;ViewGroup,则绘制整个ViewGroup)请求invalidate()方法,就绘制该视图。 一般引起invalidate()操作的函数如下: 1、直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。2、setSelection()方法
:请求重新draw(),但只会绘制调用者本身。3、setVisibility()方法 : 当View可视状态在INVISIBLE转换VISIBLE时,会间接调用invalidate()方法。 继而绘制该View。 4
、setEnabled()方法 : 请求重新draw(),但不会重新绘制任何视图包括该调用者本身。

这篇《 Android---自定义的view类(一)》中,用一个生动的例子讲解了android中游戏绘图最基本的原理。该例中两个球不断碰撞的View,主要由一个线程来不断更新View内两个球的位置,在发现两个球和墙壁发生碰撞后,改变球的逻辑参数,更新完后,调用postInvalidate(),重绘界面。

连接:http://blog.csdn.net/lxw1980/article/details/6031978

这篇《Android上让View自动更新的另一种办法(非线程)》,讲解了在不利用线程更新界面的情况下,使用invalidate()更新界面的方法。

连接:http://blog.csdn.net/lxw1980/article/details/6168463
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: