好了 我們現在回到了
Android Studio
我們來檢視DroidCardsView的編碼
再次強調 這是我們的自訂視圖
我們回顧一下 這是在自訂視圖裡
建立的一疊牌
舉例來說 每張牌會有自己的點陣圖
而我們是透過覆蓋onDraw方法
來將它們繪製到螢幕上
記住 我們覆蓋了onDraw方法以後
安卓就無法在彩現這視覺時進行優化
這會是我們身為開發人員的工作
來正確裁剪每張繪製到畫面上的牌
並避免不必要的重複繪製
還好Canvas API給了我們最好的方法
來更有效率的繪製我們的牌
我們來看一下編碼檔案
我們可以用canvas.clipRect方式
來改善編碼
我們會選擇這個變種
它會拿四個浮點作為參數
好了 現在再回到Android Studio
我們來針對這疊牌做些微調
好改善重複繪製的情況
我會用Android Studio裡
這個好玩的功能
現在你就能比對修改前後的編碼
我們現在進入對照模式
特別來看一下onDraw方式
這就是我們要覆蓋的地方
左邊是原本的for迴圈
我們來看看右邊能如何做改善
我們針對每張牌一步步做改善吧
首先 我們來計算牌的位置
然後我們叫出canvas.save這個功能
它會儲存我們現有的畫布狀態
換句話說
它會保持我們套用clipRect API
之前的畫面狀態
當我們叫出clipRect方式
我們基本上是在下一些幾何限制
當我們輸入這些參數
我們基本上是在叫系統
只要繪製出我們想看的牌
它的局部畫面
明顯的 剩下的部分會被隱藏
只有在設定界線裡出現的牌
會被繪製
最後我們會叫出canvas.restore
它會將畫布返回到沒有裁剪的狀態
換言之 它會解除
我們剛剛叫出clipRect所設下的限制
我們在每張牌的編碼裡重複這個迴圈
除了最上面那張牌
我們特別把最上面也是最後那張牌
做出不同於下面其他牌的處理
這張牌不需要任何裁剪
所以我們會將它完整繪製
透過這邊這個語句完成
好了 我們來在編碼裡完成改善
看看我們降低了多少重複繪製
好了 太棒了
你可以看到過度繪製情況少很多了
我希望這課程有讓你清楚了解
Canvas API有個直接的方式
讓你在自訂視圖中更有效率的繪製
如果你希望多了解Canvas API
記得到導師註記裡去看完整的文獻
這樣的視圖可以幫助我們
創造獨特且引人注目的UX
但記住我們要給系統一些提示
來幫助安卓更有效率完成彩現
當你在創造自訂視圖時
記住要檢查過度繪製
並適時叫出clipRect方式
好了 做的太棒了
我們接下來讓柯特
分享更多效能的智慧