0

高さがfill_parentで、RelativeLayout内に200dpの初期上部マージンを持つLinearLayout(レイアウトと呼ばれる)があります。ボタンをクリックすると、topMargin が 0 になり、LinearLayout が拡張されます。次のコードを使用しています:

     final RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
              RelativeLayout.LayoutParams.FILL_PARENT,
              RelativeLayout.LayoutParams.FILL_PARENT);

     Animation animation = new Animation() {
              @Override
              protected void applyTransformation(float interpolatedTime,
                       Transformation t) {
                       int topMargin = (int)((1-interpolatedTime)*200);
                       layoutParams.setMargins(0, topMargin, 0, 0);
                       layout.setLayoutParams(layoutParams);
                       LogThis.debug("topMargin: "+topMargin);
              }
     };
     animation.setDuration(1000);
     layout.startAnimation(animation);

問題は、アニメーションを作成しますが、ソフトではないことです。4段階で変形するので見栄えが悪いです。

この種の変換をソフトにする方法はありますか?

前もって感謝します。

編集

私は最初の瞬間にこれを持っています:

ここに画像の説明を入力

そしてアニメーションの後、私はこれが欲しい:

ここに画像の説明を入力

TranslationAnimation を使用すると、次のようになります。

ここに画像の説明を入力

4

1 に答える 1

1

途切れ途切れのアニメーションが発生しているのは、それがアニメーションの使用方法ではないためです。これらは、メソッドに渡された Transformation オブジェクトを使用します。

ただし、単純な翻訳を使用しているため、この回答のように TranslateAnimation を使用して簡単に実現できます。

アニメーションを翻訳

于 2013-06-25T21:43:31.243 に答える