8

showPreviousが呼び出されたときにビューアニメーションを実行するViewFlipperがあります。アニメーションはうまくいきます。しかし、問題は、1秒以上の遅延で開始することです。今ではそれほど多くはないようですが、アプリの使用が大幅に遅れます。

私のアニメーションは次のようになります。

Animation inFromLeft = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, -1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
inFromLeft.setDuration(350);
inFromLeft.setInterpolator(new LinearInterpolator());   

Animation outtoRight = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, +1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
outtoRight.setDuration(350);
outtoRight.setInterpolator(new LinearInterpolator());

setInAnimationとを使用してアニメーションを設定しましたsetOutAnimation;

setInAnimation(inFromLeft);
setOutAnimation(outtoRight);

次に、を使用してアニメーションを起動しますshowPrevious

アニメーションが1秒以上の遅延で開始し、アニメーションのstartTimeが-1で、startOffsetが0である理由はありますか。

4

3 に答える 3

2

2つの提案。まず、可能であれば、ViewPagerの使用に切り替えます。次に、最初の方法が不可能な場合は、XMLベースのアニメーションを使用します。コードからリソースに何かをプッシュすることは、通常、勝利です。

于 2012-08-20T08:30:58.870 に答える
1

アニメーションで遅延が発生していることを確認しますか?AnimationListenerのstartAnimationメソッドを含むログを追加してみましたか?

アニメーションの開始後に遅延が発生していることが確実な場合は、アニメーションを開始する前と終了した後(AnimationListenerを再度使用)の間にtraceviewを使用してみてください。これにより、その間にAndroidが何をしているかがわかります。

于 2012-08-26T17:18:13.213 に答える
0

@MrThysと同じ問題に直面していますが、Gingerbreadデバイスでのみ発生しています。JellyBeanデバイスではそのような問題はありません。

于 2013-07-30T20:46:49.013 に答える