我有一个视频播放器,用户可以通过旋转设备和按下按钮点击手动改变方向。当我点击按钮时,方向改变为横向,但现在方向被锁定,用户不能通过旋转设备移回纵向我试过了:-
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
和this:-
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
但似乎都不起作用。那么,我怎样才能一直保持方向未锁定并且用户可以通过点击按钮来切换方向并保持方向未锁定呢?
试试这个,在改变你想要的条件后
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
在使用按钮更改方向后,我在处理程序中将方向更改为未指定,以确保方向已更改。下面是我的代码:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
new Handler().postDelayed(new Runnable() {
public void run() {
// make screen orientation unspecified (sensor change it
//according to user action)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}, 3000);
在应用程序部分添加android:screenOrientation="portrait">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".App"
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>
</application>
我还必须在打开一个活动时将其方向更改为180,然后让用户旋转回纵向并锁定它。
我只是在onCreate:
中添加了这些行requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
活动在manifest中被锁定为纵向模式。
<activity
android:name=".ui.GalleryActivity"
android:launchMode="singleTask"
android:screenOrientation="sensorPortrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />