我試圖用凍結取向:應用程序方向(橫向或縱向)如何鎖定?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
雖然顯示停留在縱向,活動仍在重建。任何想法如何解決這個問題?
如何應用的方向被鎖定,使得該活動不會對方向變化重現?
我試圖用凍結取向:應用程序方向(橫向或縱向)如何鎖定?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
雖然顯示停留在縱向,活動仍在重建。任何想法如何解決這個問題?
如何應用的方向被鎖定,使得該活動不會對方向變化重現?
首先,不使用setRequestedOrientation()
如果你能避免它。改爲使用<activity>
清單元素中的android:screenOrientation
屬性。
其次,您還需要在<activity>
清單元素中使用android:configChanges="keyboardHidden|orientation"
以防止銷燬/重新創建循環。
最好的解決辦法是使用保存的實例。 如果您在鎖定屏幕方向,則意味着您正迫使用戶根據您所設定的限制使用的應用程序。所以總是使用onSaveInstanceState。閱讀此鏈接:在AndroidManifest.xml中的活性部分的http://developer.android.com/training/basics/activity-lifecycle/recreating.html
更具體的例子爲縱向:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
凡android:screenOrientation
設置初始取向和android:configChanges
空隙觸發相應的生命週期方法的事件在屏幕上更改。
試試這個:在你的AndroidManifest.xml
1.-設置所需的屏幕方向
android:screenOrientation="portrait|landscape"
它應該是這樣的:
<application
android:allowBackup="true"
android:icon="~icon path~"
android:label="~name~"
android:supportsRtl="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme">
</application>
2:此加入您的onCreate無效(或任何你想要)在Java活動文件(例如: 「MainActivity.java」):
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
它應該是這樣的:
protected void onCreate(Bundle savedInstanceState) {
super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}
現在屏幕不會移動,即使屏幕旋轉是在設備中。