在 Activity 为 运行 时更改方向时,如何确保从正确的布局文件夹中选择正确的布局?
how can I make sure the right layout from the right layout-folder is choosen when I change the orientation while the Activity is running?
我的应用程序针对不同的屏幕方向有不同的布局。布局保存在 layout-land 和 layout-port 文件夹中。当我启动我的应用程序 Android 时,为第一个 Activity 选择正确的方向(在我的情况下是加载屏幕)但是当我在启动第一个 Activity 后更改 phone 的方向时Android 不会更改为其他方向文件夹的布局。如果我在 Activity 运行时更改方向,如何确保选择正确的布局?是否有 OnOrientationChanged 方法或类似的方法?
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ncss.tyfby">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Feeling"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<receiver android:name=".SampleBootReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
<activity
android:name=".Profile"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".Victorios"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".Breath"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".HighFive"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
</activity>
<activity
android:name=".Settings"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".Loadscreen"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
删除这个
android:configChanges="keyboardHidden|orientation|screenSize">
android的默认行为是在方向改变时创建一个新对象并膨胀新的布局文件但是这行代码
防止在方向改变时重新启动 activity,因此 layout-land 中的布局将是 ignored.Read https://developer.android.com/guide/topics/resources/runtime-changes.html
我的应用程序针对不同的屏幕方向有不同的布局。布局保存在 layout-land 和 layout-port 文件夹中。当我启动我的应用程序 Android 时,为第一个 Activity 选择正确的方向(在我的情况下是加载屏幕)但是当我在启动第一个 Activity 后更改 phone 的方向时Android 不会更改为其他方向文件夹的布局。如果我在 Activity 运行时更改方向,如何确保选择正确的布局?是否有 OnOrientationChanged 方法或类似的方法?
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ncss.tyfby">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Feeling"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<receiver android:name=".SampleBootReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
<activity
android:name=".Profile"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".Victorios"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".Breath"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".HighFive"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
</activity>
<activity
android:name=".Settings"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".Loadscreen"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
删除这个
android:configChanges="keyboardHidden|orientation|screenSize">
android的默认行为是在方向改变时创建一个新对象并膨胀新的布局文件但是这行代码 防止在方向改变时重新启动 activity,因此 layout-land 中的布局将是 ignored.Read https://developer.android.com/guide/topics/resources/runtime-changes.html