我的申请有问题。我想为不同的屏幕尺寸定义不同的视图宽度和高度尺寸或不同的文本尺寸。我已经为屏幕分辨率定义了不同的值文件夹,因为其他问题和Android文档说。
但我这样做有问题。例如,三星Galaxy S5使用" values-sw320dp-xxhdpi"文件夹和三星Galaxy S3 Mini使用" values-sw320dp-hdpi"根据我的测试文件夹。如果我没有sw-320dp-xxhdpi文件夹,我希望应用程序必须使用默认值文件夹的维度,但它使用另一个320dp的维度。因此,如果我不使用S5的值文件夹,则S3 Mini和S5使用相同的值
之后,我尝试使用不同的方式。我探索了使用我的值设置DisplayMetrics实例;
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
tv2.setText(outMetrics.toString());
if (outMetrics.widthPixels < 380 && outMetrics.heightPixels < 480) {
outMetrics.setTo(getDisplayMetrics(outMetrics, 304.0f, 306.0f));
tv1.setText("1");
} else if (outMetrics.widthPixels >= 380
&& outMetrics.widthPixels < 480
&& outMetrics.heightPixels >= 480
&& outMetrics.heightPixels < 800) {
outMetrics.setTo(getDisplayMetrics(outMetrics, 306.0f, 306.0f));
tv1.setText("2");
} else if (outMetrics.widthPixels >= 480
&& outMetrics.widthPixels < 720
&& outMetrics.heightPixels >= 800
&& outMetrics.heightPixels < 1080) {
outMetrics.setTo(getDisplayMetrics(outMetrics, 308.0f, 308.0f));
tv1.setText("3");
} else if (outMetrics.widthPixels >= 720
&& outMetrics.widthPixels < 1080
&& outMetrics.heightPixels >= 1080
&& outMetrics.heightPixels < 1920) {
outMetrics.setTo(getDisplayMetrics(outMetrics, 307.0f, 307.0f));
tv1.setText("4");
} else if (outMetrics.widthPixels == 1080
&& outMetrics.heightPixels == 1920) {
outMetrics.setTo(getDisplayMetrics(outMetrics, 370.0f, 370.0f));
tv1.setText("5");
} else {
outMetrics.setTo(getDisplayMetrics(outMetrics, 305.0f, 305.0f));
tv1.setText("6");
}
但这里有一个逻辑错误!我在strings.xml中定义了一个具有相同名称和不同值的字符串。我希望如果屏幕宽度和高度值在我的值中,我的预定义字符串将在屏幕上显示。某些设备显示正确的值,某些设备显示错误的值。例如,HTC One E6根据它的尺寸使用最后的值(305x305),它必须写入&#34;默认值&#34;在屏幕上,但它写了&#34;介于w480 w720案例!&#34;。当设备使用308x308的情况下必须看到此字符串。
我有什么办法解决这个问题?是否有一个棘手或简单的方法?