1

画面の下に非表示になるリストをアニメーション化したい。アニメーションの場所は終了します。

アニメートダウンするとうまく機能します。-veになった後は何も見えません

しかし、アニメーションアップでは、それが持っている以上に進み、マージンを変更すると、「必要な場所で停止しないため」悪い効果が生じます。これが私がやっていることです

アニメーションダウン:

<?xml version="1.0" encoding="utf-8"?>
<set 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <!-- same animation, linear interpolator -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:toYDelta="25%p"
        android:duration="500"
     />
</set>

アニメーションアップ:

<?xml version="1.0" encoding="utf-8"?>
<set 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <!-- same animation, linear interpolator -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:toYDelta="-25%p"
        android:duration="500"
     />
</set>

onAnimationEnd で実行されるコード:

MarginLayoutParams params = (MarginLayoutParams) playerLayout.getLayoutParams();
if (params.bottomMargin == 0) {
params.setMargins(0, 0, 0, playerLayout.getHeight()* -1);
} else {
params.setMargins(0, 0, 0, 0);
}
playerLayout.setLayoutParams(params);

なにが問題ですか!!!アニメートアップでは、アニメーション領域が正常に表示され始め、突然通常の場所よりも上に速く上がり、マージンの変更により、突然通常の場所に再配置されます。

問題を示すビデオへのリンクはこちらhttps://dl.dropbox.com/u/51616029/irrelevant/20121005323.mp4

4

1 に答える 1

0

Viewアニメーション化するをレイアウトの最終的な場所に配置し、最初の可視性を非表示に設定してみてください(xmlandroid:visibility="invisible"またはコードのいずれかでsetVisibility(INVISIBLE))。ビューをアニメーション化する準備ができたら、アニメーションを開始するときにビューを表示するだけです。

onStartAnimation(Animation animation) {
    myView.setVisible(VISIBLE);
}

そしてあなたのアニメーションは

<?xml version="1.0" encoding="utf-8"?>   
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fromYDelta="-100%p"
    android:toYDelta="0"
    android:duration="500"   
 />

このように、複雑なレイアウト変更を行うことをまったく心配する必要はありません。

于 2012-10-03T04:44:01.070 に答える