從業階段,慢慢補全 ~
Android 8.0
Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
該錯誤來源於umeng的錯誤收集
-
umeng錯誤頻率,發生142次,影響36位用戶 (我自身的測試機無法復現問題)
-
錯誤詳情
-
錯誤原因
只支持不透明的全屏activity自主設置界面方向,反之如果該全屏activity是透明狀態的情況下,你設置了屏幕方向則會報錯 -
AndroidManifest 場景
<activity
android:name=".activity.MyActivity"
android:configChanges="screenSize|keyboardHidden|orientation"
android:label="我的頁面"
android:screenOrientation="portrait"
android:theme="@style/APPTheme"
/>
- 解決方式
方法 1
雖然這種方法可以解決問題,但是大多時候我們還是需要當前Activity保持垂直的狀態
刪除AndroidManifest.xml中相應Activity的 android:screenOrientation=""屬性
方法 2
1> 去掉AndroidManifes.xml裏面的"android:screenOrientation="portrait"屬性
2> 在自己的BaseActivity的onCreate中加上setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
方法 3
在保持垂直屬性的同時,設置可滿足我們需求的theme
在theme的內部屬性中查看是否有android:windowIsTranslucent屬性 , 如擁有的話,可刪除,或者設置爲 false
正式結果 - FitTheme爲我們下方新增style
<activity
android:name=".activity.MyActivity"
android:configChanges="screenSize|keyboardHidden|orientation"
android:label="我的頁面"
android:screenOrientation="portrait"
android:theme="@style/FitTheme"
/>
在res → values 下新建 styles.xml (如已有可直接添加style,如不存在則需要values-26新建styles.xml ),添加以下配置
<resources>
<style name="FitTheme" parent="AppTheme">
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<!--用背景圖消除啓動白屏-->
<item name="android:windowIsTranslucent">false</item>
</style>
</resources>
如上述設置無效,那麼可以用到我項目中部分設置,因爲我的FitTheme繼承自MyTheme
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="toolbarStyle">@style/ClubToolbar</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowDisablePreview">true</item>
</style>
<style name="ClubToolbar" parent="Widget.AppCompat.Toolbar">
<!-- 設置該屬性解決空白部分-->
<item name="contentInsetStart">0dp</item>
</style>