安卓 - 如何在视图动画完成后与其进行交互?

3

我有一个使用TranslateAnimation动画的视图:

TranslateAnimation translateAnim = new TranslateAnimation(fromX, toX, fromY, toY);
translateAnim.setDuration(SLIDING_SPEED);
translateAnim.setInterpolator(new BounceInterpolator());
translateAnim.setFillAfter(true);
mSlidingView.startAnimation(translateAnim);

动画效果很好,但是在完成后我无法再次点击视图。相反,我仍然可以点击其先前的位置。
我在StackOverflow上搜索了类似的问题(这里这里这里),但它们都没有提供任何解决方案。我听说ObjectAnimator可以解决这个问题,但是在之前的API中是否有其他方法?(我不想依赖于另一个第三方库,如NineOldAndroids,以支持早期版本的设备上的新动画API)。哦,我已经尝试过invalidate视图,但没有改变任何东西。
任何想法吗?谢谢!
2个回答

0
在API 11+中,我们可以使用ObjectAnimator类来实现这一点。
在API 10-中,当我们移动一个视图时,视觉上的视图会被移动,但物理位置仍然停留在旧位置。在动画完成后改变已移动视图的边距可以解决这个问题。

0

嗯,我猜没有链接,但你试过吗: (在setFillAfter之前)

translateAnim.setFillEnabled(true);

你使用哪个viewGroup?(我的意思是,你的视图正在哪种布局中进行转换?) - Mathieu de Brito
嗯,看看这个链接 - Mathieu de Brito
作为一种解决方法,您可以在动画监听器的onAnimationEnd方法中通过setLayoutParams设置视图的新位置。这很不好,但可能会解决问题。 - Mathieu de Brito
是的,正如我在问题中提到的那样,那个人建议使用新的API,但我不想这样做(除非我真的没有选择)。此外,“SlidingDrawer”不适合我想要实现的目标。 - Amokrane Chentir
对于你的解决方法,确实可能是一个解决方案。让我试试 :) - Amokrane Chentir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接