4

如何以编程方式控制整个设备的屏幕方向并进行更改?这里链接到一些可以做到这一点的应用程序:

http://dandroidtabletpc.com/download-total-screen-control-1-9-3-full-android-apk.html/

http://ru.androidzoom.com/android_applications/tools/ultimate-rotation-control_bznhn.html

也许有人知道这样的开源项目?

4

4 回答 4

13
@Override
    public void onCreate(Bundle savedInstanceState) {
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
}

或者

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
于 2012-04-21T09:05:58.177 回答
5

以下是我知道的两种方法:

强制屏幕方向

如果您希望设置的方向覆盖应用程序自己的方向首选项,请按照如何在 Android 中全局强制屏幕方向中的说明进行操作?.

非强制改变方向

如果您不希望设置的方向覆盖应用程序自己的方向偏好,请首先确保手机的自动旋转已关闭:

Settings.System.putInt(
    this.contentResolver,
    Settings.System.ACCELEROMETER_ROTATION,
    0 //0 means off, 1 means on
);

然后设置手机的用户方向:

Settings.System.putInt(
    getContentResolver(),
    Settings.System.USER_ROTATION,
    Surface.ROTATION_0 //Use any of the Surface.ROTATION_ constants
);

不要忘记检查返回值putInt以确保更改成功。

另外,我认为您需要以下许可:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
于 2014-07-06T02:56:38.530 回答
1

首先,在 android 中,如果您没有通过代码或 xml 文件设置任何方向,那么您的应用默认具有方向。

如果您的要求是尽管手机处于纵向/横向模式,并且您需要一个单独的定位,那么您可以通过代码锁定它,如下所示 oncreate 方法:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  //or
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
于 2012-04-21T09:18:26.603 回答
-1

使用下面的代码,您可以获得当前的活动方向。

int orientation = getResources().getConfiguration().orientation;

if(orientation == Configuration.ORIENTATION_LANDSCAPE)
{
     Log.v(TAG,"Configuration.ORIENTATION_LANDSCAPE");              
}
else if(orientation == Configuration.ORIENTATION_PORTRAIT)
{
    Log.v(TAG, "Configuration.ORIENTATION_PORTRAIT");               
}
else if(orientation == Configuration.ORIENTATION_SQUARE)
{
    Log.v(TAG, "Configuration.ORIENTATION_SQUARE");
}
else if(orientation == Configuration.ORIENTATION_UNDEFINED)
{
    Log.v(TAG, "Configuration.ORIENTATION_UNDEFINED");
}

然后使用下面的代码,您可以将活动方向设置为纵向或横向。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
于 2012-04-21T10:04:30.727 回答