3

ビューが画面から右にスライドする結果にAnimationなります。これは、次のコードで期待どおりに機能しています。

Animation outtoRight = new TranslateAnimation(
         Animation.RELATIVE_TO_SELF,  0.0f, Animation.RELATIVE_TO_SELF,  +1.0f,
         Animation.RELATIVE_TO_SELF,  0.0f, Animation.RELATIVE_TO_SELF,   0.0f
        );
outtoRight.setDuration(500);
outtoRight.setInterpolator(new AccelerateInterpolator());
outtoRight.setFillAfter(true);

これは、このアニメーションを適用するビューが画面から美しくスライドすることを意味します。もちろん、スライドインの反対もあります。しかし、私の質問は、このアニメーションを少なくとも1回は適用せずに、画面の外にビューをスライドさせてスライドさせるにはどうすればよいかということです。

ネガティブマージンなどで遊んだことがありますが、起動時にビューが画面に表示されないようにするための適切なプロパティが見つからないようです。

明確にするために、別のアニメーションで開始すると完全に非表示にできますが、ほんの一瞬でも消えていくのを見ることができます。最初はそこになく、後でスライドできるようにする方法が必要です。

4

5 に答える 5

4

私はアニメーションの専門家ではありませんが、試してみます :)

これは私が使用しているアニメーションです。右側からビューをスライドさせます

EnterByRight.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
    <translate android:fromXDelta="100%" android:toXDelta="0%"
      android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="400"/>
   </set>

私の場合、xml で定義された TableLayout をアニメーション化しています。スライドさせたいとき:

Animation animationEnterByRight = AnimationUtils.loadAnimation(this, R.anim.animationentrancebyright);
tableLayout.startAnimation(animationEnterByRight);

それは画面の外から来るので、最初に外側に配置する必要はありません。アニメーションがそれを処理してくれます。ビューが読み込まれるとすぐにビューをアニメーション化する場合、これはうまく機能します。

ビューを一定期間「非表示」にしてからアニメーションを表示する必要がある場合、View.Visible と View.Gone 以外の解決策は考えられません。しかし、なぜそれが問題なのか理解できませんでしたか?

乾杯!

于 2012-05-29T12:31:49.007 に答える
3

可能な解決策 (この質問の人気が非常に低いことを考えると) は、まったく好きではありませんが、現在使用しているものである可能性があります。ビューを可視化View.GONEし、右に移動するアニメーションを適用します。

次に、初めて(ビューにタグを付けてコントロールするのは初めてです)、可視性を設定しView.VISIBLE、アニメーションを適用してスライドインします。これは、グリッチやジャンプなしで期待どおりに機能しますが、それでも影響が心配です一度に多くの要素にアニメーションを追加するパフォーマンス関連。

于 2012-05-25T08:10:47.537 に答える
2

実際、あなた自身の答えはまったく悪くありません。私が変更する唯一のことは、ビューの実行可能性を設定するのではなくGONE、を使用して手動で作成および追加することaddChild()です。

分離されたスレッドでそれを行い、分離されたスレッドでアニメーションを追加addChild()し、メインスレッドのみを呼び出します。

一般に、UIスレッドが影響を受けないように、分離されたスレッドでinitプロセスを実行する必要があります。また、0.4秒以上かかる場合は、読み込みアニメーションの再生を最低0.5秒間開始する必要があります。これは私があなたに言うことができる最高のUIプラクティスです、私は私のアプリでそれをしました、そしてそれは素晴らしい働きをします!

于 2012-05-29T19:28:33.147 に答える
1

試してみouttoRight.setFillBefore(false);ませんか?

于 2012-05-25T02:23:40.897 に答える