2010-04-18 86 views
13

我试图用冻结取向:应用程序方向(横向或纵向)如何锁定?

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

虽然显示停留在纵向,活动仍在重建。任何想法如何解决这个问题?

如何应用的方向被锁定,使得该活动不会对方向变化重现?

回答

40

首先,不使用setRequestedOrientation()如果你能避免它。改为使用<activity>清单元素中的android:screenOrientation属性。

其次,您还需要在<activity>清单元素中使用android:configChanges="keyboardHidden|orientation"以防止销毁/重新创建循环。

4

更具体的例子为纵向:

<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空隙触发相应的生命周期方法的事件在屏幕上更改。

3

试试这个:在你的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);} 

现在屏幕不会移动,即使屏幕旋转是在设备中。

相关问题