关于透明主题的bug(转)

原文:https://blog.csdn.net/submit66/article/details/78569120

android8.0一启动就crash了,oh my god,在错误日志中看到了如下的一句信息;Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation,意思就是“只有不透明的全屏activity可以自主设置界面方向”,是的,我们的启动页面是设置了透明,同时也设置了屏幕方向为竖向,首先我们的orientation一定是要设置的了,所以那就只有不让activity透明了,但是当时为啥要让启动页面透明呢?就是为了解决应用启动时候黑屏或者白屏,所以现在要做的就是不让activity透明且让其启动时候不会有黑屏或者白屏了,有同学说直接用另外一种方式呀,就是给启动页面的style设置一个背景图片呀,但是样子在有虚拟返回键的手机上是有问题的,点击应用之后然后当启动页面展示时候,图片的尺寸会有变化,方便的同学可以试试这种方式,所以如果要使用这种方式需要适配虚拟返回键,不是一种特别好的方式。

         其实又回到了最初的问题,为啥应用启动会有黑屏或者白屏呢?这是因为用户点击应用图标之后,在应用初始化完成之前会展示一个默认的window,而这个preview window的样式取决于自己启动页的theme是怎样的了,如果是light的就是白屏,如果是black的就是黑屏了。

         所以说我们直接禁用这个默认动画不就好了么?所以将原来的windowIsTranslucent改为windowDisablePreview就能起到一样子的效果了,且应用不会崩溃了。

你可能感兴趣的:(关于透明主题的bug(转))