600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android官方开发文档Training系列课程中文版:创建自定义View之View的优化

Android官方开发文档Training系列课程中文版:创建自定义View之View的优化

时间:2021-06-19 16:36:25

相关推荐

Android官方开发文档Training系列课程中文版:创建自定义View之View的优化

原文地址:/training/custom-views/optimizing-view.html

现在已经完成了一个拥有良好设计的View,它即可以响应手势,又可以在状态之间过渡。为了避免View有卡顿的感觉,需要确保动画始终是按照每秒60帧的频率执行的。

尽可能的降低频率

为了使View更加流畅,需要从频繁调用的方法中剔除不必要的代码。

首先从onDraw()方法开始,在该方法中动刀会有明显的流畅感。尤其是应该移除onDraw()方法中的内存分配代码,因为内存分配会导致垃圾回收,这可能会使程序暂停。应该在程序初始化时或在动画开始执行之前申请内存,绝不要在动画运行的过程中申请内存。

除了精简onDraw()方法之外,还应该确保降低这些方法的调用频率。onDraw()方法的大部分调用是由invalidate()方法引起的,所以要移除不必要的invalidate()执行代码。

另一项代价非常高昂的操作就是布局的测量。每次调用requestLayout()时,Android的UI系统都会测量整个View层级来确定每个View都需要多大尺寸。如果找到尺寸有冲突的,还需要进行多次测量。UI设计者有时候需要创建内嵌ViewGroup的深层级布局来使UI布局正确。这些深层级的布局层级会引起性能问题。要使View层级尽可能的潜。

如果你有一个稍微复杂一点的UI,考虑写一个自定义ViewGroup来执行这样的布局。与内置的View不同,你的自定义View可以对它的子View的尺寸与形状作个假设,这样就可以不用去测量子View的尺寸了。饼图示例展示了如何将ViewGroup作为自定义View的一部分。饼图含有一些子View,但是绝对不会去测量它们。相反的,它通过独有的自定义布局算法直接为这些View设置了尺寸。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。