android 8.0.。又名 android oreo
非不透明全屏,設(shè)置屏幕方向崩潰問題:
IllegalStateException: Only fullscreen opaque activities can request orientation
崩潰日志顯示:只有全屏不透明的ac才能設(shè)置oritation
先看下示例,什么樣的非全屏透明的ac就導(dǎo)致該崩潰了

這非0即1的問題,沒什么可研究的,適配一下:
1:<item name="android:windowIsTranslucent">true</item>
android 8.0,在style中不能設(shè)置窗口半透明。所以,需要設(shè)置為false

2:manifest中,activity的屏幕方向去掉。
android:screenOrientation="portrait"
3:在ac中,oncreate函數(shù)中:處理兼容android 8.0以下版本
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
簡單幾步,問題解決

網(wǎng)上說這類解決方式的資料有很多,解決問題首要,再來了更深的了解一下該問題
解析:
該問題,主要就是AndroidManifest.xml中的activity同時設(shè)置
android:windowIsTranslucent = true
和
android:screenOrientation="portrait"
就會出現(xiàn)問題。
上面解決方案中去掉了設(shè)置screenOrientation,那么android 8.0中,不設(shè)置android:screenOrientation="portrait"。。那屏幕方向如何確定的?。。。。
in Android O, the translucent activity will have the same orientation as its parent activity
意思是說在android 8.0 中,當(dāng)前ac會跟其上層ac一致。所以,示例中的彈框ac,沒有設(shè)置oritation,但是其上層ac設(shè)置了。所以,沒有問題