Android自定义View教程(四)

优化View

现在你已经有了一个设计得还算不错的view了,具体来说,会在状态改变之间使用手势和转换进行回应,确保了view可以运行得很有效率。为了防止UI在重放的时候感觉缓慢,不流畅,你需要确保动画能保证运行在一秒60帧。

做少一些,频率不要太频繁

为了让你的view提速,要在调用比较频繁的步骤中减少不必要的代码。要从onDraw()开始这一优化,这一步骤将会是最大的性能开销。你应该尽量减少在onDraw()中的分配。因为分配将会导致GC垃圾回收,而这进一步将会使你的view看起来很缓慢。在初始化的时候去分配,或者在动画之间也可以。永远也不要在动画运行期间去分配。

为了让onDraw()更加轻量级一些,也需要保证它尽量不会那么频繁调用,大多数的onDraw()调用都是调用了invalidate()的结果,因此应当尽量减少不要要的invalidate()

另一个 非常大的开销是遍历layouts。一个view在任何时间调用requestLayout(),Android的UI西永都会遍历整个view树去确认每一个view需要多大。如果它发现了冲突的测量,它就会遍历view树多次。UI设计者有时会创建很深的view层次来让view工作得正常。这些很深的view层次将会导致性能问题。你需要尽量让你的view层次浅一些。

假如你需要一个复杂的UI,那么考虑一些一个自定义的Viewgroup来执行它的layout。不像内建的views那样,你的自定义view能够针对你特定的应用做一些优化。因此可以避免遍历它的孩子的测量计算。PieChart 这个例子展示了如何去继承ViewGroup作为自定义的一部分。PieChart 有子view,但是它却永远不会去测量它们,相对地,它通过自定义的算法来立即设定子views的大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值