Android官方开发文档Training系列课程中文版:创建自定义View之View的优化
原文地址:http://android.xsoftlab.net/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設置了尺寸。
總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:创建自定义View之View的优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中如何查看在res中存放的
- 下一篇: Android官方开发文档Trainin