我目前正在开发一款像往常一样在多台设备上运行的应用,但还有一款比其他设备更特别。 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
******************************************************
但我不知道如何才能使它变得有用。 我想到的另一种方法是获取设备的型号,但是如果他们决定使用类似的设备而不是相同的话会产生新的问题。
建议?
答案 0 :(得分:1)
是否有一种识别此屏幕的好方法
使用类似-swNNNdp
的内容,以获得NNN
的适当高值。
现在它对values-sw600dp文件夹做出反应
嗯,当然,但是屏幕的宽度远远大于600dp。
但是我为这款巨大的平板电脑所做的改变不应该影响普通平板电脑,如果我改变该文件夹中的东西会发生这种情况。
然后添加一个res/values-sw1000dp/
目录,以获取用于最小宽度为1000dp的屏幕的资源,其中包括您的Acer,但不包括更多正常大小的平板电脑。