要固定Android应用不随设备方向旋转,可通过以下两种方式实现:
一、在AndroidManifest.xml中配置
设置Activity方向属性 在需要固定方向的Activity标签中添加`android:screenOrientation`属性,设置为`landscape`(横向)或`portrait`(纵向)。例如:
```xml
android:name=".MainActivity"
android:screenOrientation="portrait">
```
这样设置后,该Activity将始终以指定方向显示,但允许键盘隐藏等配置变化。
禁止配置变化
若需完全禁止屏幕旋转(包括键盘显示),需在Activity标签中添加`android:configChanges`属性,包含`orientation|keyboardHidden`:
```xml
android:name=".LockOrientationActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize">
```
此外,需重写`onConfigurationChanged(Configuration newConfig)`方法,根据方向变化调整布局:
```java
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.landscape_layout);
} else {
setContentView(R.layout.portrait_layout);
}
}
```
这样可避免转屏时重启Activity。
二、通过系统设置强制锁定(适用于所有应用)
锁定屏幕方向
在手机设置中,进入「显示」或「锁定屏幕」选项,开启「锁定屏幕方向」功能。此功能会锁定整个设备的方向,包括应用内方向切换(需特殊权限)。
- 注意: 此方法会影响所有应用,需谨慎使用,且部分设备需在开发者选项中启用「允许模拟器锁定方向」。 三、注意事项 动态调整方向
兼容性:部分旧设备可能不支持`configChanges`属性,需测试兼容性。
通过以上方法,可灵活控制应用的方向锁定需求。