【发布时间】:2012-04-18 10:04:31
【问题描述】:
我为手机和银河标签制作了一个应用程序。 我只想在手机上使用纵向模式,在标签中也可以使用纵向和横向模式。
到目前为止我得到了这个代码sn-p:
public void onCreate(Bundle savedInstanceState)
{
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
if(!(width>=800 && height>=1280))
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);
//... more code below
所以我只检查屏幕尺寸,如果它是平板电脑的 800x1280,我什么也不做,方向更改处于活动状态。如果不是 800x1280 我会这样做:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
我认为它会正常工作,但是对于一些随机错误,它不是每次都工作.. 让我们说大约十次,方向只是在手机上变成横向到一秒钟,然后又变成纵向。所以有点错误。
这是另一种更好的方法吗?
【问题讨论】:
-
你想为像银河笔记这样的混合体做些什么?您的代码会将它们视为“电话”。我建议您不要为用户决定什么更好,而是让它成为一个选择?也许有些用户希望能够更改纵向/横向,您可以在您的设置中制作一个“锁定”按钮,但坦率地说,即使这在操作系统中也已经存在?
-
据我所知,galaxy note 的宽度和高度与galaxy 选项卡完全相同,因此我的代码会像处理选项卡一样处理它。对我来说很适合像银河笔记的屏幕这样大块的桌子。
标签: android-sensors android android-orientation