Android Animation 走过的坑

记得之前做过一个项目时,需要用到点补间动画。

当前端将产品提交我们测试时,点击按键后,发现没有动画,还以为没有做,就问了前端技术。

他说做了,等我退回到原来的界面,发现确实有动画,但这和我们事先设计的不对。

前端人员说,他是按照正常api设置的。setAnimation 方法,也不知道为啥是后执行动画。

网上搜索了资料也没有解决问题。

于是我查找控件关于 Animation 的方法,发现还有一个   startAnimation 的方法。

通过工具点入查看代码: 

public void startAnimation(Animation animation) {
animation.setStartTime(Animation.START_ON_FIRST_FRAME);
setAnimation(animation);
invalidateParentCaches();
invalidate(true);
}

对比 setAnimation 方法
public void setAnimation(Animation animation) {
mCurrentAnimation = animation;
if (animation != null) {
// If the screen is off assume the animation start time is now instead of
// the next frame we draw. Keeping the START_ON_FIRST_FRAME start time
// would cause the animation to start when the screen turns back on
if (mAttachInfo != null && mAttachInfo.mDisplayState == Display.STATE_OFF
&& animation.getStartTime() == Animation.START_ON_FIRST_FRAME) {
animation.setStartTime(AnimationUtils.currentAnimationTimeMillis());
}
animation.reset();
}
}

好像多了点 invalidate(true);
invalidate 在android是要求重绘的意思。

于是要求前端试试使用 startAnimation  这个方法,如果不行再说。

没想到使用 此方法后,点击按键 动画先执行了,然后再跳转到下一个界面



posted @ 2020-04-22 10:37  Yzh315  阅读(541)  评论(0)    收藏  举报