问题描述:
由于业务需要设置了一个透明背景的Activity,但发现在Android8.0系统会崩溃
先介绍下设置方法
styles.xml中新增
<style name="TransparentTheme" parent="AppTheme">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
给对应的Activity设置主题
<activity
android:name=".rn.TNTransparentReactNativeActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
android:theme="@style/TransparentTheme"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" />
然后报错如下
Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
看来是不让设置方向,没办法只能去掉android:screenOrientation="portrait",但我又想固定方向怎么办呢
解决方案:
依旧去掉android:screenOrientation="portrait",然后在代码中设置
在对应Activity的onCreate方法中设置
override fun onCreate(savedInstanceState: Bundle?) {
//android O fix bug orientation
if (android.os.Build.VERSION.SDK_INT != Build.VERSION_CODES.O) {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
super.onCreate(savedInstanceState)
}
大功告成!继续写代码~