关键思路
- 配置文件处理:在
AndroidManifest.xml
中,针对相关的Activity,设置 configChanges
属性,使其能够监听屏幕方向和分屏模式的变化,避免Activity重建。
- 监听配置变化:在Activity中重写
onConfigurationChanged
方法,在该方法内根据新的屏幕方向和分屏状态来调整布局。
核心代码
- AndroidManifest.xml
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|layoutDirection|uiMode" >
</activity>
- Kotlin代码
import android.content.res.Configuration
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
// 判断屏幕方向
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
// 竖屏处理逻辑,例如重新加载竖屏布局
setContentView(R.layout.portrait_layout)
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 横屏处理逻辑,例如重新加载横屏布局
setContentView(R.layout.landscape_layout)
}
// 判断是否处于分屏模式
if (isInMultiWindowMode) {
// 分屏模式下的特殊处理逻辑
}
}
}