1

我在屏幕的右上角(或任何地方)有一个视图。我想将此视图动画到某个位置。该位置由另一个 xml 布局定义。如何确定视图在其他布局中的坐标,以便将其设置为动画到这个位置?

背景:假设视图显示了一个放置在右上角的计算器。当用户点击这个计算器视图时,它应该被动画到一个更当前的地方。在这个动画之后,当前片段被替换为包含完全相同的视图(和其他视图)以及计算器逻辑的 CalculatorFragment。目标是将计算器动画到 CalculatorFragment 的 xml 布局定义的确切位置。这样就可以创建一个“无缝”的 FragmentTransition。

提出这个问题的另一种方式可能是“如何在不显示在屏幕上的情况下找出视图的位置?”
到目前为止,最有希望的方法是这个(但我只得到零作为坐标):

View fragmentView = getActivity().getLayoutInflater().inflate(R.layout.fragment_calculator, null);
View calc = fragmentView.findViewById(R.id.includeCalculator);
int[] coords = new int[2];
calc.getLocationInWindow(coords);
pictureframe.setAnimateToX(coords[0]);
pictureframe.setAnimateToY(coords[1]);

Log.v(TAG, "X: " + coords[0] + " Y: " + coords[1]);

谢谢你!

4

1 回答 1

0

您可以将其写入 res 文件夹的 anim 文件夹内的 xml 文件中,而不是使用另一个 XML 文件来定位您想要为视图设置动画的任何位置。

你可以使用加载动画 -

android.view.animation.Animation animation = AnimationUtils.loadAnimatio
(getApplicationContext(),R.anim.translate);

翻译.xml:

android:fromXDelta="50%p" 
android:fromYDelta="100%p" 
android:toXDelta="0%p" 
android:toYDelta="0%p" 
android:duration="10" 
android:fillAfter="true" />

</set>

您可以根据需要调整 X 和 y 位置。

于 2012-11-28T12:07:51.817 回答