您的位置:首页 > 其它

View知识点总结

2018-04-04 10:16 183 查看
自定义View基础
View构造函数
View Measure过程
View Layout过程
View Draw过程
封装View的时候怎么知道view的大小
如何优化自定义View
为了加速你的view,对于频繁调用的方法,需要尽量减少不必要的代码。先从onDraw开始,需要特别注意不应该在这里做内存分配的事情,因为它会导致GC,从而导致卡顿。在初始化或者动画间隙期间做分配内存的动作。不要在动画正在执行的时候做内存分配的事情。你还需要尽可能的减少onDraw被调用的次数,大多数时候导致onDraw都是因为调用了invalidate().因此请尽量减少调用invaildate()的次数。如果可能的话,尽量调用含有4个参数的invalidate()方法而不是没有参数的invalidate()。没有参数的invalidate会强制重绘整个view。另外一个非常耗时的操作是请求layout。任何时候执行requestLayout(),会使得Android UI系统去遍历整个View的层级来计算出每一个view的大小。如果找到有冲突的值,它会需要重新计算好几次。另外需要尽量保持View的层级是扁平化的,这样对提高效率很有帮助。如果你有一个复杂的UI,你应该考虑写一个自定义的ViewGroup来执行他的layout操作。与内置的view不同,自定义的view可以使得程序仅仅测量这一部分,这避免了遍历整个view的层级结构来计算大小。这个PieChart 例子展示了如何继承ViewGroup作为自定义view的一部分。PieChart 有子views,但是它从来不测量它们。而是根据他自身的layout法则,直接设置它们的大小。
自定义View如何考虑机型适配
外部引用时限定大小,内部自定义view时,动态计算所需长度,避免使用固定值,使用屏幕像素密度计算长度
自定义View的事件
Touch事件传递流程
事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
点击事件被拦截,但是想传到下面的View,如何操作?

requestDisallowInterceptTouchEvent()View和ViewGroup分别有哪些事件分发相关的回调方法
View刷新机制
View绘制流程
自定义控件原理,自定义View如何提供获取View属性的接口
计算一个view的嵌套层级
View渲染
自定义View注意事项

invalidate和postInvalidate的区别及使用
微信主页面的实现方式
微信上消息小红点的原理

LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景
RecycleView的使用

Requestlayout,onlayout,onDraw,DrawChild区别与联系

RecycleView原理

ListView重用的是什么?

ListView 中图片错位的问题是如何产生的?

Recycleview和ListView的区别

RecyclerView和ListView的性能对比
ListView的优化
RecycleView优化
ViewPager使用细节,如何设置成每次只初始化当前的Fragment,其他的不初始化?
https://stackoverflow.com/questions/19096868/how-can-make-my-viewpager-load-only-one-page-at-a-time-ie-setoffscreenpagelimit/44405015 介绍下SurfView

动态布局的理解

使用java代码或者xml在特定的情况下动态生成布局,例如金融申请页面就是用动态布局来通过后端配置来生成前端代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: