Как узнать, включены ли анимации окон в настройках

Я знаю, я могу запустить Настройки-Активность с помощью

Intent intent = new Intent(Settings.ACTION_DISPLAY_SETTINGS); startActivityForResult(intent,1); 

Но как узнать, включены ли анимации в первую очередь?

У меня есть анимация внутри пользовательского представления и только хочу показать ее, если анимация включена в настройках. Если они отключены, я хотел бы попросить пользователя включить их при первом запуске приложения.

Проверьте http://developer.android.com/reference/android/provider/Settings.System.html .

Вы можете прочитать флаги:

  • TRANSITION_ANIMATION_SCALE
  • WINDOW_ANIMATION_SCALE

Если они равны 0, анимация отключена.

Настройки. Система .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) { } }); 

Надеюсь, это поможет кому-то.

Intereting Posts
Android Wear без сервисов Google Play? SeekBar и медиаплеер в android Выберите, какой подкласс должен проходить со времени выполнения в java Как определить «инфляцию» в Android Android Gradle 2.2 не разрешает использование ShrinkResources для подписанного APK Потребление памяти андроидов Xamarin растет бесконечно после того, как использование достигнет определенного порога Как получить ссылку на текущий сервис? Android EditText inputType для поля StreetNumber Buck vs Gradle, pro и cons для систем сборки Android Как сохранить стабильное соединение XMPP на Android с (a) привкус? Как получить точку касания (вверху и слева) независимо от вида, окна в титане Есть ли ограничение на количество файлов в каталоге на SD-карте? Java.lang.RuntimeException: невозможно инициализировать механизм эффекта для типа: 0bed4300-ddd6-11db-8f34-0002a5d5c51b Ошибка: -3 Первые шаги в Android Studio Gradle Как загрузить собственный общий объект в банке из приложения Android?