3

私のアプリケーションは大きくObjectAnimatorを使用しています。しかし、私は最近、ObjectAnimatorを使用しているアニメーションが動作しないことや、バッテリー節約モードがオンになっているときにクラッシュすることがあることに気づいています。アプリUIの滑らかさはアニメーションに大きく依存しているので、私はそれらを省略できません。バッテリー節約モードでもこれらのアニメーションを使用できるように回避策を提供してください。 すべてのアニメーターがこの問題を起こしていますか? ありがとうございます。オブジェクト・アニメーターがバッテリー・セーバー・モードで動作しないJellyBean(> Android 5.x)

+0

"バッテリー節約モード"だけでなく、ユーザーはアニメーションを一切オフにすることができ、ValueAnimator/ObjectAnimatorは動作しません – pskink

+0

@pskink ..ユーザーが明示的にそれらをオフにする?? –

+0

アニメータのリスナー内でビジネスロジックを呼び出さないでください(アニメータリスナーによって呼び出されるため、開始値と終了値を除く) – pskink

答えて

0

実際には、バッテリーセーバーモードがオンになっていると、Androidはアニメーションを無効にします。これは、アニメータに設定した期間が0になることを意味します。アニメータは、期間が0だったのでターゲットビューに適用する最後の値を取得します。 :

View container = inflater.inflate(R.layout.container); 
View view = inflater.inflate(R.layout.view, null); 
container.addView(view); 
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", 0, 100); 
animator.setDuration(200); 
animator.start(); 

アニメーションが終了すると、表示位置は(0、100)に設定されます。 バッテリーセーバーモードでは、アニメータの持続時間が0に変更され、アニメータがビューのyプロパティを設定したときにビューがまだレイアウトされていないため、アニメーションが失敗したように見えます。

解像度:

View container = inflater.inflate(R.layout.container); 
View view = inflater.inflate(R.layout.view, null); 
new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", 0, 100); 
     animator.setDuration(200); 
     animator.start(); 
    } 
}); 

我々は確かビューをしなければならないが、アニメーターの実行前に、レイアウトの仕上げを持っていました。

+0

試しましたか? 。 –

関連する問題