2014-09-03 51 views
1

我正在创建一个android应用程序,该应用程序应该在具有明显不同的物理屏幕大小的多个不同设备上运行。 推荐的做法似乎是通过设备的dp宽度来区分屏幕尺寸,例如为相应的设备创建“layout-w700dp”文件夹。替代使用dp-width作为不同布局的鉴别器?

我在Samsung Galaxy Note 2(5.5“)和Samsung Galaxy S4 mini(4.3”)上测试了我的应用程序。由于可用空间的原因,它们都以不同的方式显示布局,因此需要不同的布局文件。

下面是问题:它们都报告640的dp宽度。Note有dp因数为2,像素宽度为1280,S4 mini的dp因数为1.5,宽度为960像素。我怎样才能为设备使用不同的布局文件?在物理尺寸方面存在着相当大的差异,我非常诚实地想知道“设备无关”测量报告每个设备的宽度相同的原因。

是否有任何其他方式使用不同的设备布局文件?

编辑:由于内部限制,我无法提供应用程序的图像,但基本上我需要为我的按钮使用不同的背景,因为“wrap_content”会考虑背景大小(以像素为单位) ,由于密度较低,因此使它们在S4 mini上更大。如果我不这样做,S4上的按钮太大并且重叠。

在此先感谢!

+0

这个布局显示在两个设备上有多大不同?你能提供截图以及布局xml吗? – helleye 2014-09-03 08:51:32

+0

@helleye:我编辑了我的问题 – BoltzmannBrain 2014-09-03 08:58:14

回答

0

有无可置疑的物理尺寸相当巨大的差异,我 坦白地想由于这个原因,“设备无关” 测量报告为每个设备

绝对是两台设备具有相同的宽度dp中的屏幕尺寸相同。如下所示:

1DP = 1px的在1.0密度屏幕,并在1.5密度屏幕

1DP = 1.5px,并在2.0密度屏幕

1DP = 2.0px。

所以注意有1280/2.0 = 640dp和mini有960/1.5 = 640 dp。但是你应该时刻记住,屏幕密度只是android工程师用来简化开发人员任务的一个桶。也就是说,如果设备是180dpi,密度为1.0,而220dpi的屏幕密度为1.5 。

是否有任何其他方式使用不同的设备布局文件?

这似乎是不可能的。最后,如果你想完全控制你的布局,你可以试着用DisplayMetrics在java代码中构建你的视图(是的,这肯定不是一个好方法)。

+0

我知道匹配检查出来,我只是感到惊讶的是,android-framework提供的密度值的唯一目的是适应不同的屏幕尺寸和分辨率,这是非特定的(例如,桶大小很大)。开发者是否真的应该以同样的方式处理4.3“和5.5”的屏幕?我将通过指定dp中的所有内容并在两个设备上使用相同的布局来解决我的问题。将不再有视觉错误,但我也不能使用Note的备用房地产。 – BoltzmannBrain 2014-09-03 10:15:41

+2

实际上,我认为工程师可能希望我们在这两种设备中使用相同的布局 – suitianshi 2014-09-03 10:22:01

相关问题