Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方開發文檔Training系列課程中文版:創建自定義View之View的優化

Android官方開發文檔Training系列課程中文版:創建自定義View之View的優化

編輯:關於Android編程

原文地址: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設置了尺寸。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved