使用视图ID而不是相对位置的动画

时间:2017-08-18 18:56:21

标签: android animation

所以我想在我的应用中实现动画。我使用android:layout_above="id"android:layout_toLeftOf="id"在RelativeLayout中对一些按钮进行了很好的排序,因此我可以轻松地更改它们之间的边距。 它适用于每个设备的屏幕密度。

我的问题是,我尝试实现按钮的动画来自 另一个。它可以工作,但很难像我的RelativeLayout一样精确使用android:fromYDelta="--%p"android:toYDelta="--%p"等工具(按钮之间的边距在各处都不一样,我不确定这个将为每个设备密度渲染相同的内容。)

那么,有没有办法使用android:startFromView="id"android:translateToView="id"等参数创建动画(通过XML或编程)?如果没有,我可以实施这样的方法吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。我将我的ImageButton扩展为动画,然后覆盖其onLayout(boolean,int,int,int,int)方法,并为我的扩展类提供了一个私有属性:int [] location(size 2)。 在其中,我呼叫getLocationOnScreen(int[] location)以在屏幕上显示我的按钮位置。

最后,在我的MainActivity中,我只需要调用我的getter来了解屏幕上的按钮位置。我用

Animation anim = new TranslateAnimation(
Animation.ABSOLUTE,
btn.getLocation[1],
...

希望这会对某人有所帮助!