移動とスケーリングのアニメーションを使用しています。まず、フレーム レイアウトを画面の中央に移動し、レイアウト パラメーターを使用してその位置パラメーターを画面の中央に設定します。それはうまくいきます!アニメーションの変換の最後にスケール アニメーションを実行すると、レイアウトが元のサイズの 2 倍にスケーリングされます。実際、私のフレーム レイアウト (アニメーション化中) は、ボタンと画像ビューで構成されています。Android のように、アニメーションはビューを変換せず、描画する必要がある位置を変更するだけです。今私の問題は、ボタンを機能させることができないことです。彼らは実際にはそこにいないからです!
アニメーションの終了後に位置パラメータを設定することで、アニメーションを翻訳するための解決策を見つけました。ビューを新しい位置に永久に移動します。
ただし、スケール アニメーションの場合、レイアウトの SIZE を子と共に変更する必要があります。しかし、元の高さの幅に倍率を掛けているため、機能していません。これがスケールアニメーションのコードです。
ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, 2.0f, 1.0f,
2.0f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnim.setDuration(600);
// scaleAnim.setFillEnabled(true);
scaleAnim.setFillAfter(true);
view.setAnimation(scaleAnim);
view.startAnimation(scaleAnim);
scaleAnim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
FrameLayout.LayoutParams par = (FrameLayout.LayoutParams) view
.getLayoutParams();
par.height = view.getMeasuredHeight() * 2;
par.width = view.getMeasuredWidth() * 2;
view.setLayoutParams(par);
view.requestLayout();
}
});
setFillAfter(true) と setFillEnabled(true) は解決策ではありません。