ビューをそのサイズ/位置から別のビュー サイズ/位置に移動させるために、移動アニメーションとスケール アニメーションを含むアニメーション セットを作成しようとしています。
getX/getY または getLocationOnScreen で位置を取得して変換アニメーターにフィードしようとしましたが、最初のビューがアニメーションの最後にある 2 番目のビューと一致する運がありませんでした:/
(スケールアニメーションも同様)
何か案が ?
わかった...私の問題は、最初に変換アニメーションを適用していたことであり、スケールアニメーションのピボットポイントをいじっていました。
以下のコード サンプルは、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);