2.鎖定Activity方向
2.1 問題
應用程式中的某個Activity不能旋轉,或是旋轉需要應用程式程式碼更直接的干預。
2.2 解決方案
(API Level 1)
在AndroidManifest.xml檔案中可以用靜態宣告將每個Activity的方向鎖定為橫向或縱向。這個宣告只能用於<activity>標籤,所有不能一次性解決整個應用程式。
只需要在<activity>元素中加上android:screenOrientation屬性,無論裝置處於什麼位置,Activity都會按指定的方向顯示。下面是最常用的屬性:
- portrait : 螢幕向上朝向裝置的頂部。
- landscape : 螢幕向上朝向裝置的右側。
- sensorPortrait : 螢幕的朝向採用縱向模式(最小的水平寬度),裝置的短邊向上。
- sensorLandscape : 螢幕的朝向採用橫向模式(最小的垂直寬度),裝置的長邊向上。
- behind : 螢幕朝向與Activity棧中前一個Activity的方向保持一致。
如需可用選項的完整列表,可查閱SDK文件中關於<activity>清單元素的部分。
2.3 實現機制
在以下程式碼中,示例AndroidManifest.xml檔案中有3個Activity,每個Activity在不同方向上被鎖定。
有一些Activity被鎖定為縱向的清單檔案
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.examples.rotation" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation = "portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ResultActivity" android:screenOrientation = "landscape" /> <activity android:name=".UserEntryActivity" android:screenOrientation = "sensorLandscape" /> </application> </manifest>