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

来源:互联网 发布:非农数据在哪里看 编辑:程序博客网 时间:2024/04/28 05:50

原理方面,可以看这篇文章:<<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


0 0
原创粉丝点击