前言:
我建立了自己的导航侧边栏,主要由一个宽度固定的活动组成 50%,为了让活动看起来像真实的侧边栏,我必须将活动设置为半透明:
<style name="AppThemeDark.TransparentWindow">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
问题:
因此,当我在侧边栏上单击时,我想用新数据重新加载MainActivity。一切工作正常,问题在于关闭侧边栏,然后重新启动MainActivity,我得到了一个完整的黑屏,可能持续1秒钟。通过切换其他“正常”活动,我已经遇到了类似的问题,但是那是您可以看到的活动背景。我可以通过以下方法解决问题:
<item name="android:windowDisablePreview">true</item>
现在我所有的常规活动都切换了,没有任何动画和延迟!
MainActivity:
<style name="AppThemeDark" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimaryDark">@color/colorBackground_DARK</item>
<item name="colorAccent">@color/colorAccentDark_DARK</item>
<item name="circularProgressBarStyle">@style/CircularProgressBar</item>
<item name="android:colorBackground">@color/colorBackground_DARK</item>
<item name="colorPrimary">@color/colorBackground_DARK</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowDisablePreview">true</item>
</style>
我的所有活动也在以下位置启动:
android:launchMode="singleTask"
我如何使用清洁烟囱重新开始活动:
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NO_ANIMATION|
Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
overridePendingTransition(0,0);
现在,当我从MainActivtiy调用此函数时,发生了奇怪的事情,例如通过拉动刷新一切正常。如果我从补充工具栏调用此方法也一切正常,但是我会遇到黑屏延迟,例如应用程序重新启动完成。 我的怀疑是唯一的原因是执行活动是半透明的。 希望你能帮助我。