全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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() 最后就是绘制图形了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # View  # 绘制  # 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上的方法  # 可以通过  # 自定义  # 第一个  # 不做  # 上一篇  # 讲了  # 大家多多  # height  # Context 


相关文章: 宝塔Windows建站如何避免显示默认IIS页面?  如何登录建站主机?访问步骤全解析  如何快速生成专业多端适配建站电话?  盐城做公司网站,江苏电子版退休证办理流程?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何批量查询域名的建站时间记录?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何快速打造个性化非模板自助建站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  如何快速搭建高效可靠的建站解决方案?  制作营销网站公司,淘特是干什么用的?  如何快速搭建安全的FTP站点?  建站之星安装步骤有哪些常见问题?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  建站主机默认首页配置指南:核心功能与访问路径优化  如何快速生成可下载的建站源码工具?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何通过虚拟主机空间快速建站?  宝塔面板如何快速创建新站点?  如何在阿里云虚拟服务器快速搭建网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站之星后台管理如何实现高效配置?  PHP 500报错的快速解决方法  如何正确选择百度移动适配建站域名?  如何挑选高效建站主机与优质域名?  如何配置IIS站点权限与局域网访问?  建站之星图片链接生成指南:自助建站与智能设计教程  手机网站制作与建设方案,手机网站如何建设?  制作门户网站的参考文献在哪,小说网站怎么建立?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  定制建站策划方案_专业建站与网站建设方案一站式指南  模具网站制作流程,如何找模具客户?  如何选择高效便捷的WAP商城建站系统?  实现虚拟支付需哪些建站技术支撑?  广东企业建站网站优化与SEO营销核心策略指南  网站代码制作软件有哪些,如何生成自己网站的代码?  公司网站设计制作厂家,怎么创建自己的一个网站?  建站主机如何选?高性价比方案全解析  高性能网站服务器配置指南:安全稳定与高效建站核心方案  如何选择靠谱的建站公司加盟品牌?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  C#如何使用XPathNavigator高效查询XML  建站之星如何配置系统实现高效建站?  如何通过可视化优化提升建站效果?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  C#怎么使用委托和事件 C# delegate与event编程方法  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。