检索由另一个布局定义的视图的位置

时间:2012-11-28 11:36:03

标签: android android-layout animation position android-animation

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

背景:我们假设视图显示位于右上角的计算器。当用户点击此计算器 - 视图时,它应该被动画到更现在的位置。在此动画之后,当前片段被CalculatorFragment替换,其中包含完全相同的View(和其他Views)以及计算器逻辑。目标是将计算器设置为CalculatorFragment的xml-layout定义的确切位置。通过这种方式,可以创建一个无缝的" 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]);

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将其写入res文件夹的anim文件夹内的xml文件中,而不是将其他XML文件写入位置,以便为视图设置动画。

您可以使用 -

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

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位置。