Android绘图机制(一)——自定义View的基础属性和方法
来源:互联网 发布:stm32f103c8t6数据手册 编辑:程序博客网 时间:2024/04/30 17:14
版权声明:本文为博主原创文章,博客地址:http://blog.csdn.net/qq_26787115,未经博主允许不得转载。
目录(?)[+]
Android绘图机制(一)——自定义View的基础属性和方法
自定义View看起来,确实看起来高深莫测,很多Android开发都不是特别在行这一块,这里面的逻辑以及一些绘画都是有一点难的,说一下我目前的状况吧,结束了一个项目,现在接手一个新的项目,老项目的时候自己确实花了点时间去研究,包括看一些相关的博文和数据,新项目的自定义View更多,现在大致的对自定义View有了一些了解,但是你要说我会呢?我确实还没有掌握,只不过我把 我画的一些柱形图和其他图 的想法写出来,当然,你要让我说原理我肯定说不出来,我只能把未的一些积累给写出来,包括绘制的时候的坐标以及所对应的规律!
一.自定义View所常用到的方法
1.onFinishInflate()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2.onSizeChanged()
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
3.onMeasure()
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
4.onLayout()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
5.onTouchEvent()
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
6.onDraw()
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
上面的方法并不需要全部写出来,看个人需要一般我们实现自定义控件有三种方法
1.对现有的控件进行扩展
2.通过组件来实现新的控件
3.重写View来实现全新的控件
二.画笔Paint和画布Canvas
实现自定义View的逻辑,我简单说一下,你首先要思考你的View需要多大和放在那里,然后绘图,你需要一根笔,并且笔可以设置color实现各种颜色Android就像一个瞎子一样,他什么都不懂,你要告诉他在什么位置,用什么,画什么东西,差不多就是这个意思,不要觉得难,慢慢来
1.Paint属性
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2.Canvas属性
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
三.onMeasure基础逻辑
来源《Android群英传》
- EXACTLY
表示父视图希望子视图的大小应该是由specSize的值来决定的,系统默认会按照这个规则来设置子视图的大小,开发人员当然也可以按照自己的意愿设置成任意的大小。- AT_MOST
表示子视图最多只能是specSize中指定的大小,开发人员应该尽可能小得去设置这个视图,并且保证不会超过specSize。系统默认会按照这个规则来设置子视图的大小,开发人员当然也可以按照自己的意愿设置成任意的大小。- UNSPECIFIED
表示开发人员可以将视图按照自己的意愿设置成任意的大小,没有任何限制。这种情况比较少见,不太会用到。
四.View的大小以及屏幕大小
1.View的高宽测量
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.屏幕的高宽测量
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
五.视图状态
看了郭霖大神的讲解
视图状态的种类非常多,一共有十几种类型,不过多数情况下我们只会使用到其中的几种,因此这里我们也就只去分析最常用的几种视图状态。
1. enabled
表示当前视图是否可用。可以调用setEnable()方法来改变视图的可用状态,传入true表示可用,传入false表示不可用。它们之间最大的区别在于,不可用的视图是无法响应onTouch事件的。
2. focused
表示当前视图是否获得到焦点。通常情况下有两种方法可以让视图获得焦点,即通过键盘的上下左右键切换视图,以及调用requestFocus()方法。而现在的Android手机几乎都没有键盘了,因此基本上只可以使用requestFocus()这个办法来让视图获得焦点了。而requestFocus()方法也不能保证一定可以让视图获得焦点,它会有一个布尔值的返回值,如果返回true说明获得焦点成功,返回false说明获得焦点失败。一般只有视图在focusable和focusable in touch mode同时成立的情况下才能成功获取焦点,比如说EditText。
3. window_focused
表示当前视图是否处于正在交互的窗口中,这个值由系统自动决定,应用程序不能进行改变。
4. selected
表示当前视图是否处于选中状态。一个界面当中可以有多个视图处于选中状态,调用setSelected()方法能够改变视图的选中状态,传入true表示选中,传入false表示未选中。
5. pressed
表示当前视图是否处于按下状态。可以调用setPressed()方法来对这一状态进行改变,传入true表示按下,传入false表示未按下。通常情况下这个状态都是由系统自动赋值的,但开发者也可以自己调用这个方法来进行改变。
就跟我们写选择器一样,默认是什么,选中后又是什么一样我默认是什么图片,点击后又是什么图片
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
这边只是稍微的基础,大家看了可能会觉得瞎扯,这也太简单了吧,但是对一部分想了解自定义View的人来说,这种简单粗暴的写法可能更好一点,教程也会逐步加深的,客观莫慌!
Android绘图机制(二)——自定义View绘制圆形,矩形,多边形的坐标讲解
- Android绘图机制(一)——自定义View的基础属性和方法
- Android绘图机制(一)——自定义View的基础属性和方法
- Android绘图系列(一)——自定义View基础
- 自定义View的基础属性和方法
- Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件
- Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件
- Android的绘图机制学习---自定义View
- Android绘图机制(一) View类
- Android绘图机制(一) View类
- Android自定义View绘图基础
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- 自定义view—绘图基础Canvas+Paint
- 自定义View基础(一)——追根溯源,透过源码认识ViewRoot,DecorView和performTraversals方法
- 前奏:自定义View(一)onDraw()中一些常用的属性和方法总结
- android动画基础(一) View动画和属性动画
- 自定义View之绘图篇(一):基础图形的绘制
- 0916Android基础自定义View(Canvas绘图)
- 使用Bouncy Castle生成数字签名、数字信封
- java IO 序列化和反序列化
- 【数据库】InnoDB: Fatal error: cannot allocate memory for the buffer pool
- MySQL学习笔记四:字符集
- ubuntu 环境 安装 C++ IDE Eclipse
- Android绘图机制(一)——自定义View的基础属性和方法
- Promise对象
- Qt5:自定义事件
- 将本地代码文件夹作为新分支添加到远程仓库
- was mutated while being enumerated.
- View的绘制流程
- centos7 改用BBR内核
- Object对象
- MySQL学习笔记五:数据类型