Android为特定设备设置特定布局

Android为特定设备设置特定布局,android,Android,我目前正在开发一个应用程序,通常必须在多个设备上运行,但有一个比其他设备更特殊。Acer DA241HL是一款24英寸平板电脑,分辨率为1920x1080px,应该安装在墙上的某处 有没有一个好的方法来识别这个屏幕。现在它会对values-sw600dp文件夹做出反应。但是我对这个巨大的平板电脑所做的任何更改都不会影响正常的平板电脑,如果我更改该文件夹中的内容,就会发生这种情况 以下代码: DisplayMetrics metrics = getResources().getDispla

我目前正在开发一个应用程序,通常必须在多个设备上运行,但有一个比其他设备更特殊。Acer DA241HL是一款24英寸平板电脑,分辨率为1920x1080px,应该安装在墙上的某处

有没有一个好的方法来识别这个屏幕。现在它会对values-sw600dp文件夹做出反应。但是我对这个巨大的平板电脑所做的任何更改都不会影响正常的平板电脑,如果我更改该文件夹中的内容,就会发生这种情况

以下代码:

    DisplayMetrics metrics = getResources().getDisplayMetrics();
    float density  = getResources().getDisplayMetrics().density;
    float dpHeight = metrics.heightPixels / density;
    float dpWidth  = metrics.widthPixels / density;
    Log.e("screen", "******************************************************");
    Log.w("screen", "d " + density + " y" + dpHeight + " x" + dpWidth + " deviceType:" + getResources().getString(R.string.device_type));
    Log.e("screen", "******************************************************");
打印以下内容:

******************************************************
d 1.0 y1032.0 x1920.0 deviceType:5
******************************************************
但是我不明白我怎么能使它有用。 我考虑的另一种方法是获取设备的型号,但如果他们决定获得类似的设备,但不是相同的,则会产生新的问题

建议

有没有一个好的方法来识别这个屏幕

对于适当高的
NNN
,使用类似于
-swNNNdp的值

现在它会对values-sw600dp文件夹作出反应

当然可以,但屏幕的最小宽度远大于600dp

但我为这个巨大的平板电脑所做的任何改变都不应该影响正常的平板电脑,如果我改变那个文件夹中的内容,就会发生这种情况


然后添加一个
res/values-sw1000dp/
目录,用于最小宽度为1000dp的屏幕,其中包括Acer,但不包括更普通大小的平板电脑。

检查此目录:@Haresh谢谢,但这并不能真正解决我的问题。谢谢你的回答!但只要我有strings.xml在下面der(values-sw1000db)我遇到了一个没有logcat输出的崩溃。dimens.xml可以工作。有什么建议吗?@just_user:“我遇到了一个没有logcat输出的崩溃”“我觉得很难相信。如果您正在崩溃,则应该在LogCat中获得堆栈跟踪。我也不太清楚为什么在这种情况下字符串会改变。如果没有堆栈跟踪或其他更多的东西,我真的不知道会出什么问题。不知道为什么我不在LogCat中获得堆栈跟踪。其他车祸都有报道。但是,如果我将该文件夹中的strings.xml重命名为xstrings.xml,它就会工作。我在那里保留了一个字符串,用于识别设备类型、电话、平板电脑,以及现在用于动态加载菜单内容的巨大平板电脑。谢谢你的帮助@just_user:“但是如果我将该文件夹中的strings.xml重命名为xstrings.xml,它就会工作”——因为
values
resource目录中的文件名并不重要,这确实很奇怪。更奇怪的是,“values-sw600dp”中的strings.xml没有任何问题。