AndroidM彩蛋源码学习(2)
属性动画(ObjectAnimator.ofXXX),之前所看到的博客 / 教程都是给第三个参数(变长参数“values”)传入两个数据,实际上它可以只传入一个!表示从当前值到目标值(传入的值)

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

TimeAnimator:回调函数提供totalTime和deltaTime。
这个游戏所有元素都是View,实现了GameView接口:
然后根据dt和PARAMS的一些常量(例如“PARAMS.TRANSLATION_PER_SEC”)计算出View移动到的位置(setTranslationX)

彩蛋中的彩蛋(bug)一:
Player的构造函数,修改玩家颜色的代码:
setTint应该改为:

彩蛋中的彩蛋(bug)二:
越玩越卡的原因:
刚刚提到了,彩蛋游戏中每个元素本质都是View,在他们移出屏幕的时候,每个View并没有被复用,而是removeView、在数组中移除View,使得View有机会被回收。
而这里while(i-->0),i的值首先在这里被赋值为view的数量:
然后变量i又被滥用:
于是i又不再是view的数量,导致每个移出了屏幕的view都没有被回收,所以越玩越卡。

除了这两篇文章记录的一些不常见API,
这个androidM彩蛋其他部分都是android开发的入门常识,
除了可以让初学者用来改写练习JNI,似乎没有其他值得学习的地方了。