# 读 Android 开发艺术探索 &7
2017-02-06 11:58
316 查看
关键词:自定义 View
自定义 View 是一个综合的技术体系,涉及 View 的层次结构、事件分发机制、View 的工作原理等技术细节。面对陌生的自定义 View 的时候,运用以下思想去快速的解决问题:首先掌握了基本功比如 View 的弹性滑动、滑动冲突、绘制原理等;熟练掌握了基本功之后,在面对新的自定义 View 的时候,要能对其进行分类并选择合适的实现思路;平时多积累一些自定义 View 相关的经验,并逐渐做到融会贯通。
继承 ViewGroup 派生特殊的 Layout。用于自定义的布局,重新定义一种新布局,需要合适地处理 ViewGroup 的测量、布局这两个过程,并同时处理子元素的测量和布局过程;
继承特定的 View 比如 TextView。用于拓展某种已有的 View 的功能;
继承特定的 ViewGroup 比如 LinearLayout。几种 View 组合在一起的效果;
如果有必要,让 View 支持 padding。直接继承 View 和 ViewGroup 的控件,padding 是默认无法生效的,需要自己处理;(中心思想就是要考虑到 View 四周的空白)
尽量不要在 View 中使用 Handler,没必要;View 本身就提供了 post 系列的方法,完全替代 Handler 的作用;
View 中如果有线程或动画需要停止的时候,那么 View#onDetachedFromWindow 是一个很好的时机;
处理冲突
End.
Note by HF.
Learn from 《Android 开发艺术探索》
自定义 View 是一个综合的技术体系,涉及 View 的层次结构、事件分发机制、View 的工作原理等技术细节。面对陌生的自定义 View 的时候,运用以下思想去快速的解决问题:首先掌握了基本功比如 View 的弹性滑动、滑动冲突、绘制原理等;熟练掌握了基本功之后,在面对新的自定义 View 的时候,要能对其进行分类并选择合适的实现思路;平时多积累一些自定义 View 相关的经验,并逐渐做到融会贯通。
1. 自定义 View 的分类 #
继承 View 重写 onDraw 方法。用于实现一些不规则的效果,需要自己支持 wrap_content 和 padding;继承 ViewGroup 派生特殊的 Layout。用于自定义的布局,重新定义一种新布局,需要合适地处理 ViewGroup 的测量、布局这两个过程,并同时处理子元素的测量和布局过程;
继承特定的 View 比如 TextView。用于拓展某种已有的 View 的功能;
继承特定的 ViewGroup 比如 LinearLayout。几种 View 组合在一起的效果;
2. 自定义 View 需要知道的几点 #
让 View 支持 wrap_content。对于直接继承自 View 的控件,如果不对 wrap_content 做特殊处理,那么就相当于使用 match_parent。需要指定一个 wrap_content 模式的默认宽高即可;如果有必要,让 View 支持 padding。直接继承 View 和 ViewGroup 的控件,padding 是默认无法生效的,需要自己处理;(中心思想就是要考虑到 View 四周的空白)
尽量不要在 View 中使用 Handler,没必要;View 本身就提供了 post 系列的方法,完全替代 Handler 的作用;
View 中如果有线程或动画需要停止的时候,那么 View#onDetachedFromWindow 是一个很好的时机;
处理冲突
End.
Note by HF.
Learn from 《Android 开发艺术探索》
相关文章推荐
- # 读 Android 开发艺术探索 &11
- # 读 Android 开发艺术探索 &2
- # 读 Android 开发艺术探索 &3
- # 读 Android 开发艺术探索 &6
- # 读 Android 开发艺术探索 &10
- # 读 Android 开发艺术探索 &12
- # 读 Android 开发艺术探索 &13
- # 读 Android 开发艺术探索 &8
- # 读 Android 开发艺术探索 &4
- # 读 Android 开发艺术探索 &1
- # 读 Android 开发艺术探索 &5
- 任玉刚【Android开发艺术探索】读后笔记四
- Android开发艺术探索学习-IPC之Binder(一)
- 读书笔记-Android开发艺术探索-第12章-Bitmap的加载和Cache
- 任玉刚【Android开发艺术探索】读后笔记一
- 读书笔记-Android开发艺术探索-第11章-Android的线程和线程池
- 【读书笔记】【Android开发艺术探索】第10章 Android 的消息机制
- 【读书笔记】Android开发艺术探索
- Android开发艺术探索学习-View的事件分发机制(二)
- Android开发艺术探索学习-View的滑动