所以我正在为Android开发一个应用程序,我想强制平板电脑横向方向,并为手机设置竖向方向。然而,据我所见,似乎只能进行方向锁定,这违反了想要为设备设置两个不同方向的目的。
平板电脑:横向 手机:竖向
更加技术性地说。
我在“res/layout-xlarge-land”中有一个横向布局,用于平板电脑的横向方向,并且我在“res/layout”中有原始布局,我只想显式使用layout-xlarge-land来适配平板电脑。没有别的,基本上仅针对xlarge设备使用横向布局。
谢谢!
所以我正在为Android开发一个应用程序,我想强制平板电脑横向方向,并为手机设置竖向方向。然而,据我所见,似乎只能进行方向锁定,这违反了想要为设备设置两个不同方向的目的。
平板电脑:横向 手机:竖向
更加技术性地说。
我在“res/layout-xlarge-land”中有一个横向布局,用于平板电脑的横向方向,并且我在“res/layout”中有原始布局,我只想显式使用layout-xlarge-land来适配平板电脑。没有别的,基本上仅针对xlarge设备使用横向布局。
谢谢!
根据设备密度设置特定方向可能无法正常工作,因为有些手机的密度比平板电脑高。
我所做的是通过在清单文件中的活动标签中设置属性来禁用设备的方向传感器,如下所示:
android:screenOrientation="nosensor"
默认情况下,当您运行应用程序时,手机将设置为纵向方向,而平板电脑将设置为横向方向(因此它会从layout-xlarge-land
中选择xml文件)。由于您已经设置了方向锁定,因此它将保持在该方向。
您可以测量设备的实际尺寸(以英寸为单位),然后使用以下代码进行编程设置方向:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
或者
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
要获取设备的物理大小,您可以使用此处发布的代码。
尽管不是100%准确,但足以确定应用程序运行的设备类型。
我不确定你在说什么,但似乎你应该只需测量分辨率并相应地采取行动。我的意思是,除了分辨率不同之外,你怎么知道它是手机还是平板电脑呢?
针对那些使用过
android:screenOrientation="nosensor"
它本身没有起作用,我在我的基础活动中使用了它以及这个片段。
@Override
protected void onCreate(Bundle savedInstanceState) {
if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
&& (this.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) < Configuration.SCREENLAYOUT_SIZE_LARGE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else if((this.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
super.onCreate(savedInstanceState);
}
llPhone = (LinearLayout) findViewById (R.id.llPhone)
if (llPhone == null) {
tablet = true;
}
else {
tablet = false;
}