Android自定义View绘制的方法及过程(二)
上一篇《android 自定义view(一) paint、rect、canvas介绍》讲了最基础的如何自定义一个view,以及view用到的一些工具类。下面讲下view绘制的方法及过程
public class myview extends view { private string tag = "--------myview"; private int width, height; public myview(context context, attributeset attrs) { super(context, attrs); log.i(tag,"myview()"); } @override protected void onsizechanged(int w, int h, int oldw, int oldh) { super.onsizechanged(w, h, oldw, oldh); width = w; height = h; log.i(tag,"onsizechanged()"); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); log.i(tag,"ondraw()"); rect rect = new rect(0, 0, width, height); paint paint = new paint(); paint.setcolor(color.red); canvas.drawrect(rect, paint); } @override protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { super.onmeasure(widthmeasurespec, heightmeasurespec); log.i(tag,"onmeasure()"); } @override protected void onfinishinflate() { super.onfinishinflate(); log.i(tag,"onfinishinflate()"); } }
03-15 01:28:53.111 30961-30961/com.myview i/--------myview: myview()
03-15 01:28:53.111 30961-30961/com.myview i/--------myview: onfinishinflate()
03-15 01:28:53.210 30961-30961/com.myview i/--------myview: onmeasure()
03-15 01:28:53.210 30961-30961/com.myview i/--------myview: onmeasure()
03-15 01:28:53.520 30961-30961/com.myview i/--------myview: onmeasure()
03-15 01:28:53.520 30961-30961/com.myview i/--------myview: onmeasure()
03-15 01:28:53.520 30961-30961/com.myview i/--------myview: onsizechanged()
03-15 01:28:53.543 30961-30961/com.myview i/--------myview: ondraw()
1、myview() 构造方法,这个不做解释,铁定第一个被调用。
作用:传入context
2、onfinishinflate() 当view中所有的子控件均被映射成xml后触发
3、onmeasure() 在view放置到父容器时调用
作用:测量view的大小,也可以通过下面方式,修改view的大小
@override protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { super.onmeasure(widthmeasurespec, heightmeasurespec); setmeasureddimension(100,100); }
也可以通过以下方式获取控件的宽和高
@override protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { super.onmeasure(widthmeasurespec, heightmeasurespec); int width = measurespec.getsize(widthmeasurespec); int height = measurespec.getsize(heightmeasurespec)); }
4、onsizechanged() 在控件大小发生改变时调用。所以这里初始化会被调用一次
作用:获取控件的宽和高度
5、ondraw() 最后就是绘制图形了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: blender怎么旋转模型?
推荐阅读
-
Android编程实现二级下拉菜单及快速搜索的方法
-
android View 绘制完成监听的实现方法
-
Android编程自定义对话框(Dialog)位置及大小的方法
-
Android自定义View绘制的方法及过程(二)
-
Android开发使用自定义View将圆角矩形绘制在Canvas上的方法
-
Android自定义View实现绘制虚线的方法详解
-
Android进阶之绘制-自定义View完全掌握(二)
-
Android自定义View设定到FrameLayout布局中实现多组件显示的方法 分享
-
Android实现在xml文件中引用自定义View的方法分析
-
Android创建外部lib库及自定义View的图文教程