上一篇《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
相关文章:
济南专业网站制作公司,济南信息工程学校怎么样?
如何用虚拟主机快速搭建网站?详细步骤解析
建站之星价格显示格式升级,你的预算足够吗?
建站之星如何开启自定义404页面避免用户流失?
教学网站制作软件,学习*后期制作的网站有哪些?
音响网站制作视频教程,隆霸音响官方网站?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
山东云建站价格为何差异显著?
青岛网站建设如何选择本地服务器?
常州企业建站如何选择最佳模板?
香港服务器选型指南:免备案配置与高效建站方案解析
建站之星如何快速解决建站难题?
如何用PHP工具快速搭建高效网站?
营销式网站制作方案,销售哪个网站招聘效果最好?
如何快速生成专业多端适配建站电话?
制作旅游网站html,怎样注册旅游网站?
Thinkphp 中 distinct 的用法解析
打鱼网站制作软件,波克捕鱼官方号怎么注册?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何用狗爹虚拟主机快速搭建网站?
相册网站制作软件,图片上的网址怎么复制?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
,巨量百应是干嘛的?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
定制建站如何定义?其核心优势是什么?
用v-html解决Vue.js渲染中html标签不被解析的问题
c# 在高并发下使用反射发射(Reflection.Emit)的性能
网站制作话术技巧,网站推广做的好怎么话术?
如何在IIS管理器中快速创建并配置网站?
如何通过网站建站时间优化SEO与用户体验?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何在IIS7上新建站点并设置安全权限?
湖北网站制作公司有哪些,湖北清能集团官网?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何零成本快速生成个人自助网站?
免费视频制作网站,更新又快又好的免费电影网站?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
装修招标网站设计制作流程,装修招标流程?
C++如何编写函数模板?(泛型编程入门)
ppt制作免费网站有哪些,ppt模板免费下载网站?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
黑客入侵网站服务器的常见手法有哪些?
图册素材网站设计制作软件,图册的导出方式有几种?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
*请认真填写需求信息,我们会在24小时内与您取得联系。