前言
接手一个公司项目后,发现在自己的华为P10上 跳转会出现黑闪一下
此时我想到, 画面闪烁可能由几个方面原因引起:
- Fragment
- 硬件加速
- Theme
开始动手
在尝试更改前两种方案后,很遗憾的发现并没有什么作用, 所以尝试定位 Theme
,终于找到了问题所在:
在 AndroidManifest.xml
中定义了Activity的 android:theme="@style/AppTheme.NoAnimation"
属性如下
<style name="NoAnimation" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@null</item>
<item name="android:activityOpenExitAnimation">@null</item>
<item name="android:activityCloseEnterAnimation">@null</item>
<item name="android:activityCloseExitAnimation">@null</item>
<item name="android:taskOpenEnterAnimation">@null</item>
<item name="android:taskOpenExitAnimation">@null</item>
<item name="android:taskCloseEnterAnimation">@null</item>
<item name="android:taskCloseExitAnimation">@null</item>
<item name="android:taskToFrontEnterAnimation">@null</item>
<item name="android:taskToFrontExitAnimation">@null</item>
<item name="android:taskToBackEnterAnimation">@null</item>
<item name="android:taskToBackExitAnimation">@null</item>
</style>
<style name="AppTheme.NoAnimation">
<item name="android:windowAnimationStyle">@style/NoAnimation</item>
</style>
在 AppTheme.NoAnimation
中添加一行属性,立刻解决问题:
<style name="AppTheme.NoAnimation">
<item name="android:windowAnimationStyle">@style/NoAnimation</item>
<item name="android:windowIsTranslucent">true</item>
</style>