Java Android使用了错误的布局?
我需要为不同的手机创建不同的布局 我检查了3部手机和屏幕尺寸:Java Android使用了错误的布局?,java,android,android-layout,layout,Java,Android,Android Layout,Layout,我需要为不同的手机创建不同的布局 我检查了3部手机和屏幕尺寸: SONY XPERIA Z: 08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: widthPixels = 1080 08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: heightPixels = 1776 08-30 09:04:05.258 1008-1008/pl.graphicbox.
SONY XPERIA Z:
08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: widthPixels = 1080
08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: heightPixels = 1776
08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: densityDpi = 480
08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: xdpi = 442.451
08-30 09:04:05.258 1008-1008/pl.graphicbox.polamp I/LAYOUT: ydpi = 443.345
Samsung s3:
08-30 09:05:00.179 21820-21820/pl.graphicbox.polamp I/LAYOUT: widthPixels = 480
08-30 09:05:00.179 21820-21820/pl.graphicbox.polamp I/LAYOUT: heightPixels = 800
08-30 09:05:00.179 21820-21820/pl.graphicbox.polamp I/LAYOUT: densityDpi = 240
08-30 09:05:00.179 21820-21820/pl.graphicbox.polamp I/LAYOUT: xdpi = 234.0
08-30 09:05:00.179 21820-21820/pl.graphicbox.polamp I/LAYOUT: ydpi = 236.0
Sony xperia M
08-30 09:08:25.964 5391-5391/pl.graphicbox.polamp I/LAYOUT: widthPixels = 720
08-30 09:08:25.964 5391-5391/pl.graphicbox.polamp I/LAYOUT: heightPixels = 1184
08-30 09:08:25.964 5391-5391/pl.graphicbox.polamp I/LAYOUT: densityDpi = 320
08-30 09:08:25.964 5391-5391/pl.graphicbox.polamp I/LAYOUT: xdpi = 345.056
08-30 09:08:25.964 5391-5391/pl.graphicbox.polamp I/LAYOUT: ydpi = 342.231
我创建了3个布局:
layout-sw200dp
layout-sw300dp
layout-sw400dp
但所有手机都使用相同的布局——sw300dp
有人能解释一下我做错了什么以及如何修复吗。
Thx.看起来所有手机的宽度都在300到400 dp之间,当它们使用sw300dp时,这是正确的。 要进行检查,请将
dpWidth
添加到日志中:
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density = getResources().getDisplayMetrics().density;
float dpWidth = outMetrics.widthPixels / density;
看起来所有手机的宽度都在300到400 dp之间,这是正确的,当他们使用sw300dp时。 要进行检查,请将
dpWidth
添加到日志中:
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density = getResources().getDisplayMetrics().density;
float dpWidth = outMetrics.widthPixels / density;
检查我的编辑,我做到了。检查我的编辑,我忘了添加一行代码检查我的编辑,我做到了。检查我的编辑,我忘了添加一行代码是的,你是对的。所有设备均为320和360。。但索尼M和索尼Z有360宽dp。。但是屏幕大小是不同的。。现在怎么办?@Esperanz0,不幸的是Android就是这样工作的。dp不是一个精确的单位。我们的目标是使应用程序的布局具有最接近屏幕大小的通用性,因此它在5.2英寸和4.7英寸的设备上看起来都不错。如果你在这方面有问题,你应该提出一个新问题,并描述为什么你想为这样一个相似的设备使用3种不同的布局。我想创建不同的布局,因为在Sony M上,布局看起来不错。。但在索尼Z文本是多行而不是单行等。。。这就是为什么我想为…@Esperanz0创建自己的布局,你们应该在新问题中发布你们的布局和设备截图。我敢肯定,还有另一种,
正确的
方法可以解决你的问题是的,你是对的。所有设备均为320和360。。但索尼M和索尼Z有360宽dp。。但是屏幕大小是不同的。。现在怎么办?@Esperanz0,不幸的是Android就是这样工作的。dp不是一个精确的单位。我们的目标是使应用程序的布局具有最接近屏幕大小的通用性,因此它在5.2英寸和4.7英寸的设备上看起来都不错。如果你在这方面有问题,你应该提出一个新问题,并描述为什么你想为这样一个相似的设备使用3种不同的布局。我想创建不同的布局,因为在Sony M上,布局看起来不错。。但在索尼Z文本是多行而不是单行等。。。这就是为什么我想为…@Esperanz0创建自己的布局,你们应该在新问题中发布你们的布局和设备截图。我相信,还有另一种,正确的
方法可以解决您的问题