Android - TranslateAnimation一个视图到另一个视图

时间:2012-01-15 14:35:22

标签: android android-listview android-animation

我想在我的应用中包含一个简单的动画,其中 view 小部件移动到另一个 view 小部件。

我写的代码是:

TranslateAnimation animate = new TranslateAnimation(view1.getTranslationX(), view1.getTranslationY(), view2.getTranslationX(), view2.getTranlationY());
animate.setDuration(500);
view1.startAnimation(animate);

问题是view1是从ViewSwitcher继承的自定义视图,而view2Button。 getTranslation()没有为这两者提供这样的方法异常。

如何在屏幕上显示视图的位置,这是制作动画的正确方法吗?

注意: ViewSwitcherListView项目的一部分,因此它还需要跨越ListView边界才能到达Button (以防万一)。

2 个答案:

答案 0 :(得分:1)

getTranslationX()getTranslationY()之类的方法只返回一个可应用于实际视图位置的偏移值,而不是位置本身。您需要使用getLeft()getTop()等方法来获取视图相对于其父级的x / y位置值(在本例中为ListView)。

如果您需要更多全局坐标,请使用getLocationInWindow()getLocationOnScreen()获取视图相对于全局显示层次结构的位置。这些方法不会返回位置,而是将其填充到您提供的int[]作为参数。

可以在任何View上调用所有这些方法。

HTH

答案 1 :(得分:0)

基本上,我不确定,如果你做的一切都正确..

就我而言,在Android中实现动画的最简单方法是使用ViewFlipper。也许你应该考虑用它包装你的观点。

如果你按照我的建议http://kevinrohling.wordpress.com/2011/01/25/using-a-slide-transition-with-viewflipper/

,你有一些关于在ViewFlipper中使用翻译和alpha动画的帖子