設定。 システム .TRANSITION_ANIMATION_SCALEと設定。 システム .ANIMATOR_DURATION_SCALEはAPI 17から廃止されました。
だから私は見つけるために、このメソッドを使用します。
private boolean areSystemAnimationsEnabled() {
float duration, transition;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
duration = Settings.Global.getFloat(
context.getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE, 1);
transition = Settings.Global.getFloat(
context.getContentResolver(),
Settings.Global.TRANSITION_ANIMATION_SCALE, 1);
} else {
duration = Settings.System.getFloat(
context.getContentResolver(),
Settings.System.ANIMATOR_DURATION_SCALE, 1);
transition = Settings.System.getFloat(
context.getContentResolver(),
Settings.System.TRANSITION_ANIMATION_SCALE, 1);
}
return (duration != 0 && transition != 0);
}
それとも、あなたは...だけANIMATOR_DURATION_SCALEため
private float checkSystemAnimationsDuration() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return Settings.Global.getFloat(
context.getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE,
0);
} else {
return Settings.System.getFloat(
context.getContentResolver(),
Settings.System.ANIMATOR_DURATION_SCALE,
0);
}
}
をチェックし、それに応じて)(あなたのvalueAnimator.setDurationを設定することができます。
ValueAnimator alphaFirstItemAnimator = new ValueAnimator();
alphaFirstItemAnimator.setObjectValues(0.8F, 0F);
alphaFirstItemAnimator.setDuration((long)(DURATION_ANIMATION_MILLIS * checkSystemAnimationsDuration()));
alphaFirstItemAnimator.setInterpolator(new DecelerateInterpolator());
alphaFirstItemAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
}
});
私はそれが誰かを助けてくれることを願っています。
働いたおかげで、。追加する場合、ユーザー設定が「一部のウィンドウアニメーションが表示されている」に設定されている場合、Settings.System.WINDOW_ANIMATION_SCALEのみが1.0に設定され、もう1つは0.0に設定されます。 – roplacebo
私は実際には 'getInt()'関数で試してみましたが、例外が見られるので、デフォルト値で 'getInt()'に切り替えましたが、常にデフォルト値を返します:( –
'getFloat'、それは動作しますか? –