作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要为我的应用程序中的所有屏幕禁用 Activity 过渡动画。以前的解决方案适用于所有 Android 版本:
<style name="base_theme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowAnimationStyle">@null</item>
</style>
...但对于 Android 8“Oreo”,每次转换(向前或向后移动)都会导致黑屏闪烁。 IE。仍然没有任何动画,但会出现非常烦人的闪烁(90% 的几率,~20-30 毫秒,整个屏幕)。
根据我的“研究”:
我能找到的唯一解决方案:
定义一个空的过渡动画
<?xml version="1.0" encoding="utf-8"?>
<set />
并将其应用于应用程序中的每个 Activity (onCreate & finish)
overridePendingTransition(R.anim.animation_activity_none, R.anim.animation_activity_none);
问题:
是对 Oreo 的某种新限制(即功能),还是平台错误,或者可能是应用程序问题?还有其他解决方案吗?
[更新]
又一个发现。确保在主线程上调用 Activity finish() 和 overridePendingTransition() 对!否则会发生线程竞争并且有时不会应用 overridePendingTransition。
[更新]
Google 已确认这是 Android 8.0 中的一个错误,可能会在 8.1 中修复。因此,“空动画”修复已存在多年,直到 minSdkVersion == 27。
最佳答案
我有同样的问题,我设法解决了,想法是什么都不玩,请看下面的xml:
值文件夹
<style name="yourTheme">
<item name="android:windowAnimationStyle">@style/ThemeApp.Animation.Activity.Replace</item>
<style name="ThemeApp.Animation.Activity.Replace">
<item name="android:activityOpenEnterAnimation">@anim/replace_anim</item>
<item name="android:activityOpenExitAnimation">@anim/replace_anim</item>
<item name="android:activityCloseEnterAnimation">@anim/replace_anim</item>
<item name="android:activityCloseExitAnimation">@anim/replace_anim</item>
<item name="android:taskOpenEnterAnimation">@anim/replace_anim</item>
<item name="android:taskOpenExitAnimation">@anim/replace_anim</item>
动画文件夹:replace_anim.xml
<set/>
关于android - 奥利奥 : disable Activity transition animation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401883/
我是一名优秀的程序员,十分优秀!