Android自定義控件需要注意的點

  1. 在 xml中創(chuàng)建了一個view時,所有在xml中聲明的屬性都會被傳入到view的構造方法中的AttributeSet類型的參數(shù)當中。 通過調用Context的obtainStyledAttributes()方法返回一個TypedArray對象。然后直接用TypedArray對象獲取自定義屬性的值。TypedArray對象是共享的資源,所以在獲取完值之后必須要調用recycle()方法來回收。

  2. 自定義控件的屬性發(fā)生改變之后,控件的樣子也可能發(fā)生改變,在這種情況下就需要調用invalidate()方法讓系統(tǒng)去調用view的onDraw()重新繪制。同樣的,控件屬性的改變可能導致控件所占的大小和形狀發(fā)生改變,所以需要調用requestLayout()來請求測量獲取一個新的布局位置。

  3. 在onDraw方法中開始繪制之前,應該讓畫筆Paint對象的信息初始化完畢。這是因為View的重新繪制是比較頻繁的,這就可能多次調用onDraw,所以初始化的代碼不應該放在onDraw方法里。

  4. 為了避免你的控件看得來遲緩,確保動畫始終保持每秒60幀。

  5. 下面是官網給出的優(yōu)化建議:

  1. 避免不必要的代碼
  2. 在onDraw()方法中不應該有會導致垃圾回收的代碼。
  3. 盡可能少讓onDraw()方法調用,大多數(shù)onDraw()方法調用都是手動調用了invalidate()的結果,所以如果不是必須,不要調用invalidate()方法。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容