AndroidM彩蛋源碼學習(2)
屬性動畫(ObjectAnimator.ofXXX),之前所看到的博客 / 教程都是給第三個參數(shù)(變長參數(shù)“values”)傳入兩個數(shù)據(jù),實際上它可以只傳入一個!表示從當前值到目標值(傳入的值)

View::getOverlay()
ViewOverlay類有add、remove、clear方法,可以在view頂部添加一個Drawable.

TimeAnimator:回調(diào)函數(shù)提供totalTime和deltaTime。
這個游戲所有元素都是View,實現(xiàn)了GameView接口:
然后根據(jù)dt和PARAMS的一些常量(例如“PARAMS.TRANSLATION_PER_SEC”)計算出View移動到的位置(setTranslationX)

彩蛋中的彩蛋(bug)一:
Player的構造函數(shù),修改玩家顏色的代碼:
setTint應該改為:

彩蛋中的彩蛋(bug)二:
越玩越卡的原因:
剛剛提到了,彩蛋游戲中每個元素本質(zhì)都是View,在他們移出屏幕的時候,每個View并沒有被復用,而是removeView、在數(shù)組中移除View,使得View有機會被回收。
而這里while(i-->0),i的值首先在這里被賦值為view的數(shù)量:
然后變量i又被濫用:
于是i又不再是view的數(shù)量,導致每個移出了屏幕的view都沒有被回收,所以越玩越卡。

除了這兩篇文章記錄的一些不常見API,
這個androidM彩蛋其他部分都是android開發(fā)的入門常識,
除了可以讓初學者用來改寫練習JNI,似乎沒有其他值得學習的地方了。