我想在我的应用中包含一个简单的动画,其中 view 小部件移动到另一个 view 小部件。
我写的代码是:
TranslateAnimation animate = new TranslateAnimation(view1.getTranslationX(), view1.getTranslationY(), view2.getTranslationX(), view2.getTranlationY());
animate.setDuration(500);
view1.startAnimation(animate);
问题是view1
是从ViewSwitcher
继承的自定义视图,而view2
是Button
。 getTranslation()没有为这两者提供这样的方法异常。
如何在屏幕上显示视图的位置,这是制作动画的正确方法吗?
注意: ViewSwitcher
是ListView
项目的一部分,因此它还需要跨越ListView
边界才能到达Button
(以防万一)。
答案 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动画的帖子