完全に画面外に配置されたビューがあり、それを画面上でアニメーション化しようとしています。
私が電話するとき:
view.startAnimation(tA);
何も起こらず、tA.initialize と tA.applyTransformation が呼び出されることはありません。
アニメーションを開始する前にビューの一部が見えるようにビューを移動すると、アニメーションは正しく機能します。
親ビューから離れて配置されている場合、ビューがアニメーション化されない原因は何ですか?
完全に画面外に配置されたビューがあり、それを画面上でアニメーション化しようとしています。
私が電話するとき:
view.startAnimation(tA);
何も起こらず、tA.initialize と tA.applyTransformation が呼び出されることはありません。
アニメーションを開始する前にビューの一部が見えるようにビューを移動すると、アニメーションは正しく機能します。
親ビューから離れて配置されている場合、ビューがアニメーション化されない原因は何ですか?
開始または終了のオフスクリーン座標が提供されている場合、Android アニメーションがうまく機能しないという同じ問題を調査したことから、私の理解です。
Android フォーラムには、このバグが解決されたというダイアログがいくつかありますが、まだ 4.2 で問題が発生しています。
編集:
考え直して、この回答に出くわしました。新しい API ( ) を使用できる場合、それは有効な代替手段を提供しますObjectAnimator
。
View view = this;
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "y", 0, 100);
anim.setDuration(super.animationDuration());
anim.start();
のプロパティがObjectAnimator.ofFloat(view, "y", 0, 100);
ある場所
ObjectAnimator.ofFloat(Object objBeingAnimated, String propertyBeingAnimated, float startValue, float endValue)
この回答は、 (私の場合)ValueAnimator
の を変更するために使用して見つけました。これにより、問題が修正されました。My View は、ビューが画面外になるように設定されたマージンで開始します。MarginLayoutParams.topMargin
onAnimationUpdate()
このObjectAnimator
アプローチは有望でしたが、私にはうまくいきませんでしたTranslateAnimation
。