1

画面の右上隅 (またはどこでも) にビューがあります。このビューを特定の位置にアニメーション化したいと思います。この位置は、別の xml-layout によって定義されます。他のレイアウト内のビューの座標を特定するにはどうすればよいですか?この位置にアニメーション化できますか?

背景: ビューの右上隅に電卓が表示されているとします。ユーザーがこの電卓ビューをクリックすると、より現在の場所にアニメーション化されます。このアニメーションの後、現在のフラグメントは、まったく同じビュー (および他のビュー) と電卓ロジックを含む CalculatorFragment に置き換えられます。目標は、CalculatorFragment の xml-layout によって定義された正確な位置に計算機をアニメーション化することです。このようにして、「シームレスな」FragmentTransition を作成できます。

この質問のもう 1 つの言い方は、「ビューを画面に表示せずにビューの位置を知るにはどうすればよいですか?」ということです。
これまでで最も有望なアプローチはこれでした(ただし、座標としてゼロしか得られません):

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

位置用に別の XML ファイルを用意する代わりに、res フォルダーの anim フォルダー内の 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 に答える