1

ビューをそのサイズ/位置から別のビュー サイズ/位置に移動させるために、移動アニメーションとスケール アニメーションを含むアニメーション セットを作成しようとしています。

getX/getY または getLocationOnScreen で位置を取得して変換アニメーターにフィードしようとしましたが、最初のビューがアニメーションの最後にある 2 番目のビューと一致する運がありませんでした:/

(スケールアニメーションも同様)

何か案が ?

4

1 に答える 1

0

わかった...私の問題は、最初に変換アニメーションを適用していたことであり、スケールアニメーションのピボットポイントをいじっていました。

以下のコード サンプルは、X でのみ変換されます。

View viewFrom = findViewById(R.id.viewA);
View viewTo = findViewById(R.id.viewB);
// Getting delta from center
int delta = (viewTo.getLeft()+Math.round(viewTo.getWidth()*viewTo.getScaleX()))-(viewFrom.getLeft()+Math.round(viewFrom.getWidth()+viewFrom.getScaleX()));
float ratio = viewTo.getScaleX() / viewFrom.getScaleX();
Animation anim = new ScaleAnimation(1.f, ratio, 1.f, ratio, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
AnimationSet animSet = new AnimationSet(true);
animSet.setInterpolator(new DecelerateInterpolator());
animSet.addAnimation(anim);
anim = new TranslateAnimation(0, delta, 0, 0);
animSet.addAnimation(anim);
animSet.setDuration(500);
viewFrom.startAnimation(animSet);
于 2013-07-08T09:57:53.643 に答える