应用程序方向(横向或纵向)如何锁定?
问题描述:
我试图用冻结取向:应用程序方向(横向或纵向)如何锁定?
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);}
现在屏幕不会移动,即使屏幕旋转是在设备中。