我有一个专为平板电脑设计的应用程序。它以纵向模式显示其数据的一种视图,并以横向模式显示不同的数据视图。用户可以随意在两者之间切换。
在较小的“电话”类型设备上,横向太小而无用,但纵向模式仍然可行。我想在较小的设备上强制使用肖像,比如 7 岁以下的任何内容,同时在平板电脑上允许两种模式。
我该怎么做?
我有一个专为平板电脑设计的应用程序。它以纵向模式显示其数据的一种视图,并以横向模式显示不同的数据视图。用户可以随意在两者之间切换。
在较小的“电话”类型设备上,横向太小而无用,但纵向模式仍然可行。我想在较小的设备上强制使用肖像,比如 7 岁以下的任何内容,同时在平板电脑上允许两种模式。
我该怎么做?
您应该遵循支持多个屏幕的开发人员指南。然后,您可以使用 sw 限定符来打开物理屏幕尺寸。
也许 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);
}
}