[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
原文连接: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
相关文章推荐
- 【Android基础知识】ViewPager基本使用
- 【Android基础知识】ViewStub的使用
- Android WebView使用基础
- Android webview基础知识
- Android基础知识:多线程下载和xUtils的使用
- Android View系列一: View基础知识
- Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
- Android自定义View总结(一)基础知识与实例
- 【Android基础知识】IntentService基本使用
- 【Android基础知识】选项菜单、上下文菜单、子菜单的使用
- 【Android基础知识】各种对话框的使用
- Android 自定义View——View 基础知识
- android 自定义view基础知识
- Android WebView使用基础
- android自定义View一(基础和原理)
- 【Android基础知识】WebView基本用法
- 【Android基础知识】使用ViewFlipper实现页面左右滑动
- 【Android基础知识】使用Gallery和ImageSwitcher实现图片轮播效果
- 【Android基础知识】AsyncTask基本使用
- Android基础知识--Preference的使用