Android:有时会锁定屏幕方向

时间:2013-09-27 23:04:00

标签: android screen-orientation

我有一个专为平板电脑设计的应用程序。它以纵向模式显示其数据的一个视图,并以横向显示不同的数据视图。用户可以随意在两者之间切换。

在较小的“手机”型设备上,横向太小而无法使用,但纵向模式仍然可行。我想在较小的设备上强制使用肖像,比如7以下的任何设备,同时在平板电脑上允许这两种模式。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您应该遵循supporting multiple screens的开发人员指南。然后,您可以使用sw限定符来打开物理屏幕大小。

答案 1 :(得分:1)

也许Krylez是正确的,正确的解决方案是做其他事情但是如果您想要锁定/释放屏幕方向(我将它与短时间运行的AsyncTasks一起使用以避免必须处理ProgressDialog)

public class Device {

public static void lockOrientation(Activity activity) {
    Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int rotation = display.getRotation();
    int tempOrientation = activity.getResources().getConfiguration().orientation;
    int orientation = 0;
    switch(tempOrientation)
    {
    case Configuration.ORIENTATION_LANDSCAPE:
        if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
            orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
        else
            orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270)
            orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        else
            orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
    }
    activity.setRequestedOrientation(orientation);
}





public static void releaseOrientation(Activity activity) {
    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

}