iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android自定义View绘制的方法及过程(二)
  • 628
分享到

Android自定义View绘制的方法及过程(二)

view方法Android 2022-06-06 01:06:16 628人浏览 安东尼
摘要

上一篇《Android 自定义View(一) Paint、Rect、canvas介绍》讲了最基础的如何自定义一个View,以及View用到的一些工具类。下面讲下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() 最后就是绘制图形了

您可能感兴趣的文章:Android自定义View之继承TextView绘制背景Android自定义View系列之Path绘制仿支付宝支付成功动画Android自定义view绘制圆环占比动画Android自定义View实现shape图形绘制Android自定义View实现绘制虚线的方法详解Android使用自定义View绘制渐隐渐现动画自定义滑动按钮为例图文剖析Android自定义View绘制Android自定义View绘制随机生成图片验证码Android编程开发之在Canvas中利用Path绘制基本图形(圆形,矩形,椭圆,三角形等)Android使用Canvas绘制圆形进度条效果Android开发使用自定义View将圆角矩形绘制在Canvas上的方法


--结束END--

本文标题: Android自定义View绘制的方法及过程(二)

本文链接: https://www.lsjlt.com/news/22035.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作