自定义VIEW②绘制流程
来源:互联网 发布:泛型 java 编辑:程序博客网 时间:2024/05/20 23:03
View绘制的流程图如下:
除开类的构造之外一共有三个过程:measure过程,layout过程,以及draw过程,下面将试着解读这几个过程。
Constructor(函数的构造)
View类的构造函数有四种重载,分别如下:
public void View(Context context){...}public void View(Context context,AttributeSet attrs){...}public void View(Context context,AttributeSet attrs,int defStyleAttr){...}public void View(Context context,AttributeSet attrs,int defStyleAttr,int defStyleres){...}
通过观察源码,发现View类其实只写了两种重载:第一种以及第四种,第二,三种是通过调用第四种重载,并将其他变量设置为零。Android源码如下所示:
public View(Context context,AttributeSet attrs){ this.(Context context,AttributeSet attrs,0);}public View(Context context,AttributeSet attrs,int defStyleAttr){ this.(Context context,AttributeSet attrs,defStyleAttr,0);}
所以这里只说明一个参数以及四个参数的构造用法 : public void View(Context context){...}
: 该函数为在Activity中初始化控件所用,传递进来的context
即为该空间工作的活动.
public void View(Context context,AttributeSet attrs,int defStyleAttr,int defStyleres){...}
: 该函数为在XML文件中初始化控件所用,各参数作用如下: context
: 作用同上; attrs
: XML定义的属性; defstyleattr
: 默认样式属性,为view提供一个基本的样式. defstyleres
: 将资源文件中ID你故意的某个样式设置为基本样式,当且仅当defstyleattr
为0时有效.
函数的构造只学习到这里,详细的以后再说.
Measure过程(测量View大小)
Measure过程的作用是负责测量View的大小,如果是ViewGroup的话,则会有序的遍历ViewGroup树,并且测量出其实际的大小,即设置时记得宽高(mMeasureHeight和mMeasureWidth属性),而宽高则是由其父视图与自身决定的.
由于课设以及时间的关系,这里不考虑测量一个ViewGroup,也就不考虑它的递归调用,仅仅考虑测量一个View对象,作为一个线性过程.
核心方法:measure() -> onMeasure() -> setMeasuredDimension().
前面的方法都是测量View的大小,而etMeasuredDimension()是该过程的终极方法,用于结束测量阶段.
Layout过程(确定子View的位置)
确定布局的函数是onLayout()
,用于确定子View的位置.
在View类中onLayout()
方法是空实现,而在ViewGroup类中为abstract,故如果继承自ViewGroup类的话必须重写该方法.由于我主要关注View而不是viewGroup,故暂时忽略之.
Draw过程(绘制过程)
自定义View中的重点,所有的View最终都是用draw方法进行绘制.我们应该重写onDraw(Canvas canvas)
方法以进行绘制,然后调用draw方法完成系统绘制.
对View的控制以及监听
在写View的时候暴露一些接口,以对View进行控制,或者对View进行监听.
- 自定义VIEW②绘制流程
- 自定义view的绘制流程
- android 自定义view绘制流程
- 有关Android View 绘制流程 & 自定义View
- Android View绘制流程,如何自定义View
- Android View 绘制流程 及 自定义View
- 自定义view:view的绘制流程
- View和自定义控件的绘制流程
- View绘制流程以及自定义控件
- Android 自定义view ViewRootImpl绘制流程
- View绘制流程(3)----view的绘制流程及自定义View的相关问题
- Android自定义view 必须知道的 Android View绘制流程
- Android自定义View之View的绘制流程
- 自定义View基础(一) View的绘制流程
- Android的自定义View及View的绘制流程
- Android 自定义View、ViewGroup(二)之绘制流程
- AndroidView绘制流程分析及自定义View、ViewGroup进阶
- 自定义View的绘制流程初探(含实例)
- 字符串_hash
- Unity说明文档翻译-Asset Workflow
- 如何参与linux 内核开发
- VMware虚拟机nat模式连不上网
- 模方程
- 自定义VIEW②绘制流程
- Android跳转到通讯录获取用户名称和手机号码
- JavaSE 学习参考:二维数组定义
- Leetcode刷题记——Trapping Rain Water(捕获雨水)
- 通过ICE接口对hbase进行文件操作
- 微信公众号文章采集 爬取微信文章 采集公众号的阅读数和点赞数?
- OSPF的LSA类型详解
- 小白初用Redis
- iOS的主要框架介绍