如何在活动销毁视图时删除withEndAction runnable?

时间:2016-07-28 07:27:49

标签: android animation

当活动或片段破坏视图时,如何删除withEndAction runnable?我得到NPE,因为当用户按下后退按钮动画正在执行时,然后当调用runnable时,所有视图都为空。当然,如果检查我可以放空指针,但我可能还有另一种更好的方法。

view.animate().translationY(TRANSLATION_Y).withEndAction(new Runnable() {
            @Override
            public void run() {
            otherview.setText(...);
    }).start();

1 个答案:

答案 0 :(得分:2)

view.animate()正在返回一个ViewPropertyAnimator实例,该实例负责制作动画,并保留 animationEndRunnable

view.animate()
    .yBy(20)
    .setDuration(300)
    .withEndAction(animationEndRunnable)
    .start();

要取消通过 .withEndAction()调用传递的Runnable,您只需在发布的同一视图上调用 view.animate()。cancel()即可

@Override
public void onDestroyView() {
    super.onDestroyView();
    view.animate().cancel();
}