0

上下にスライドするビューをアニメーション化したいと思います。私のレイアウト:

<RelativeLayout>
    <LinearLayout
        android:id="@+id/foo"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true" />
</RelativeLayout>

レイアウト「foo」は、アクティビティのレイアウトの下部に固定されています。最初は非表示にしておきたいです。たとえば、上部の y 座標を開始する画面の下部のピクセルにしたいと思います。

UI の他の場所でボタンをクリックすると、foo が上にスライドし、その下端が画面の下部に触れたときに終了します。

別のボタンをクリックすると、foo が下にスライドして元の開始位置 (上端が画面の下のピクセルにある場所) に戻ります。

私は次のアニメーション定義でそれをやろうとしています:

// slide up
<set
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/accelerate_interpolator">
  <translate
    android:fromYDelta="-100%"
    android:toYDelta="0%"
    android:duration="700"
    android:fillBefore="true"
    android:fillAfter="true">
  </translate>
</set>

// slide down
<set
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:interpolator="@android:anim/accelerate_interpolator">
  <translate
    android:fromYDelta="0%"
    android:toYDelta="-100%"
    android:duration="700"
    android:fillBefore="true"
    android:fillAfter="true">
  </translate>
</set>

私の理解では、スライドアップ アニメーションを適用すると、fillBefore が true であるため、foo は -100% y に再配置する必要があります。その後、fillAfter が true であるため、元の位置までアニメートし、その後はそこにとどまります。スライド ダウン アニメーションも同様に機能します。

しかし、それは機能していません。ビューが飛び回っているようです。これを行う方法はありますか?

ありがとう

4

1 に答える 1

0

必要なものはすべて SlidingDrawer クラスだと思います。wrap_content にいくつか問題があるため、WrappingSlidingDrawerを使用できます。

「ハンドル」を非表示にするか、まったく実行しないようにして、他のボタンでスライダーを上下にスライドできるはずです。

お役に立てば幸いです:)

于 2012-09-13T22:45:44.150 に答える