Android-View-绘制

参考文章:http://blog.csdn.net/guolin_blog/article/details/16330267

View绘制流程

  1. measure:确定大小
  2. layout:确定位置
  3. draw:执行绘制

measure

  • 关键方法

方法 1:public final void measure(int widthMeasureSpec, int heightMeasureSpec);

功能:计算一个view应该显示的大小尺寸。但是,测量工作没有实际生效!!!

方法 2:protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec);

功能:设定view的尺寸,view子类通过重写此方法确定其内容的大小尺寸。包含子视图的viewGroup应在此遍历测量所有子视图的尺寸!

方法 3:protected final void setMeasuredDimension(int measuredWidth, int measuredHeight);

功能:此方法必须被onMeasrue()方法调用,来存储已测量view的width和height。

  • 相关类

1,MeasureSpec:组合size, mode到一个int数据中。

mode三个值:

  • EXACTLY 子视图的大小为父视图指定的size值
  • AT_MOST 子视图的大小不超过size值
  • UNSPECIFIED 子视图可设置成任意的大小,没有任何限制。

layout

  • 关键方法

方法 1:public void layout(int l, int t, int r, int b);

功能:指定内部子view的显示位置和尺寸。但是,没有实际生效!!!

方法 2:protected void onLayout(boolean changed, int left, int top, int right, int bottom);

功能:指定内部childView的尺寸和位置。自定义的ViewGroup应重写此方法,并遍历调用其包含的所有childView的layout()方法!

方法 3:public final int getWidth();

功能:获取view的宽度。计算方法:mRight - mLeft

方法 4:public final int getMeasuredWidth();

功能:获取view测量后的宽度。计算方法:setMeasuredDimension(int measuredWidth, int measuredHeight)设定的值。

draw

  • 关键方法

方法 1:public void draw(Canvas canvas);

功能:绘制view(以及其包含的childView)。

方法 2:protected void onDraw(Canvas canvas);

功能:执行自定义的绘制工作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值