androi 8.0 設(shè)置屏幕Orientation崩潰問題

android 8.0.。又名 android oreo

非不透明全屏,設(shè)置屏幕方向崩潰問題:

IllegalStateException: Only fullscreen opaque activities can request orientation

崩潰日志顯示:只有全屏不透明的ac才能設(shè)置oritation

先看下示例,什么樣的非全屏透明的ac就導(dǎo)致該崩潰了

example.jpeg

這非0即1的問題,沒什么可研究的,適配一下:

1:<item name="android:windowIsTranslucent">true</item>
android 8.0,在style中不能設(shè)置窗口半透明。所以,需要設(shè)置為false

translucent.png

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);
        }

簡單幾步,問題解決

halffinished.jpg

網(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è)置了。所以,沒有問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容