021.关于自定义View
来源:互联网 发布:网络拳皇平台suparc 编辑:程序博客网 时间:2024/05/20 23:57
1.让View支持wrap_content
这是因为直接继承View或者ViewGroup的控件,如果不在onMeasure中对wrap_content做特殊处理。那么当外界在布局中使用wrap_content时就无法达到预期的结果。
2.如果有必要,让自定义的View支持padding,充分考虑margin和padding对ViewGroup的影响
这是因为直接继承View的控件,如果不在draw方法中处理padding,那么padding属性是无法起作用的。另外,直接继承自ViewGroup的控件需要在onMeasure和onLayout中考虑padding和子元素的margin对它造成的影响,不然会导致padding和子元素的margin不起作用。
3.没必要在View中使用handler
这里不是说不能使用handler,而是,基本上没有必要在View中去创建一个新的handler对象,因为View本身有post方法。不过,我们对用handler实现回调也不反对的。
4.View中如果有线程或者动画,需要及时停止,参考下View#onDetachedFromWindow
在这边介绍一下onDetachedFromWindow 这个方法,onDetachedFromWindow 和onAttachedToWindow 是对应的,onDetachedFromWindow 在View在destroy view的时候调用,所以可以加入取消广播注册等的操作。下面是View的onDetachedFromWindow方法:
/** * This is called when the view is detached from a window. At this point it * no longer has a surface for drawing. * * @see #onAttachedToWindow() */ protected void onDetachedFromWindow() { //已经从窗口 mPrivateFlags &= ~PFLAG_CANCEL_NEXT_UP_EVENT; mPrivateFlags3 &= ~PFLAG3_IS_LAID_OUT; removeUnsetPressCallback(); removeLongPressCallback(); removePerformClickCallback(); removeSendViewScrolledAccessibilityEventCallback(); destroyDrawingCache(); destroyLayer(false); cleanupDraw(); mCurrentAnimation = null; }
所以,在这个方法中,我们需要把线程、动画停止,同时释放一些资源,如果不及时处理,是有可能造成内存泄露的。比如,我们的View有对象引用,但是那个View已经从窗体分离了,那个Activity已经消失了,这时候,还是有可能因为View在其他Activity有引用,导致这个View的对象没有被回收,造成内存泄露。
5.View带有滑动嵌套情形时候,需要处理好滑动冲突。
如果有滑动冲突,我们需要合适地去处理滑动冲突,否则会导致View不能正常处理滑动事件,导致我们想要的效果达成不了。
0 0
- 021.关于自定义View
- 关于自定义view
- 关于自定义View
- 关于自定义view的思考
- 关于自定义View入门知识
- 关于getMeasureHeight和自定义view
- 关于自定义view属性设置
- 关于自定义View简单说明
- 关于view的自定义viewpager
- 关于自定义组合控件以及自定义view
- Android 自定义view第一弹——关于自定义View
- 关于自定义view的适配问题
- 关于自定义视图容器(Container View Controller)
- 关于android自定义view的方法
- 关于自定义View思考与实践1
- 关于自定义视图容器(Container View Controller)
- 关于自定义View的一些总结
- 关于自定义view的那点事
- 点和向量的数学基础
- OPC的数据访问方法分别有同步访问、异步访问和订阅式数据采集方式------OPC(第一篇)
- IT忍者神龟之JMeter-使用Badboy录制Web测试脚本
- fd_set 的用法
- MySQL优化
- 021.关于自定义View
- 大型网站架构技能图谱(Java版)
- MyBatis insert操作返回主键
- Docker容器内应用服务自启动
- 小程序---根据数据库反向生成java文件
- 本地文件夹同步/备份软件
- 计数排序和基数排序和桶排序
- **浙大PAT甲级 1098堆排序
- hibernate-tools详细使用教程