View的测量 绘制
2018-02-08 11:45
127 查看
绘制包括了3个主要步骤
1.Mesure 2.Layout 3.DrawMesureSpec
32位的整型值 他的高2位表示测量模式 SpecMode 低30位表示某种测量模式下的规格大小SpecSize三种测量模式
UNSPECIFIED 不指定测量模式 很少使用
EXACTLY 精确测量模式
AT_MOST 最大值模式
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(measureWidth(widthMeasureSpec),measureHeigth(heightMeasureSpec));
}
//自定义测量宽的方法
private int measureWidth(int widthMeasureSpec) {
int result=0;
int specMode=MeasureSpec.getMode(widthMeasureSpec);
int specSize=MeasureSpec.getSize(widthMeasureSpec);
if (specMode==MeasureSpec.EXACTLY){
result=specSize;
}else{
//自己定义宽度
result=200;
if(specMode==MeasureSpec.AT_MOST){
result=Math.min(result,specSize);
}
}
return result;
}
//自定义测量高的方法
private int measureHeigth(int heightMeasureSpec) {
int result=0;
int specMode=MeasureSpec.getMode(heightMeasureSpec);
int specSize=MeasureSpec.getSize(heightMeasureSpec);
if (specMode==MeasureSpec.EXACTLY){
result=specSize;
}else{
//自己定义宽度
result=200;
if(specMode==MeasureSpec.AT_MOST){
result=Math.min(result,specSize);
}
}
return result;
}通过以上代码就可以给wrap_content设置一个默认的大小 而不是系统默认的填充整个子View的大小
Measure
计算View的实际大小 回调onMesaure方法Layout
用来确定View在父容器中的布局位置Draw
用来将控件绘制出来最终调用View 的draw方法绘制每个具体的View第一步: 绘制View背景 drawBackground(canvas);.....第二步: 如果需要的话,保存canvas图层,为fading做准备saveCount=canvas.getSaveCount();...canvas.saveLayer(left,top,right,top+length,null,flags);...第三步: 绘制View内容onDraw(canvas);...第四步: 绘制View的子viewdispatchDraw(canvas);...第五步 如果需要的话 绘制View的fading边缘并恢复图层canvas.drawRect(left,top,rigth,top+length,p);...canvas.restoreToCount(saveCount);...第六步 绘制View的装饰(例如滚动条)onDrawScrollBars(canvas)ViewGroup的绘制
调用dispatchDraw()方法进行子View的绘制 遍历所有的子View并调用子View的绘制方法来完成绘制工作相关文章推荐
- Android中View测量、布局及绘制原理
- Android视图的绘制流程(上)——View的测量
- Android自定义View之绘制、测量
- android绘制自定义view时,控件大小的测量与确定问题,代码演示
- [05] Android View 测量-布局-绘制流程
- Android O: View的绘制流程(二):测量
- 【Android自定义View】测量和绘制浅析
- Android视图的绘制流程(上) View的测量
- Android视图的绘制流程(上)——View的测量
- View、ViewGroup的测量、布局、绘制流程
- ViewGroup的测量与绘制
- view的流程(测量,布局,绘制)
- 自定义View(View的绘制与测量)
- View绘制详解(三),扒一扒View的测量过程
- android 之view的测量和绘制(群英传读书笔记1)
- View绘制详解(三),扒一扒View的测量过程
- Android学习笔记(一) View、ViewGroup的测量绘制
- 简单研究Android View绘制一 测量过程
- 3.4.Android控件架构与自定义控件详解之ViewGroup的测量与绘制
- ViewGroup的测量、绘制