我正在创建一个Android应用程序,该应用程序应该在具有明显不同的物理屏幕大小的多个不同设备上运行。 建议的方法是通过设备的dp宽度区分屏幕尺寸,例如为相应的设备创建“layout-w700dp”文件夹。
我在三星Galaxy Note 2(5.5“)和三星Galaxy S4 mini(4.3”)上测试了我的应用程序。由于可用空间,它们都以不同的方式显示布局,因此需要不同的布局文件。
这是问题:它们都报告dp宽度为640. Note的dp因子为2,像素宽度为1280,S4 mini的dp因子为1.5,宽度为960px。如何为设备使用不同的布局文件?物理尺寸无可争议地存在巨大差异,我很遗憾地想知道“设备无关”测量报告每个设备的宽度相同的原因。
是否有其他方法可以为每台设备使用不同的布局文件?
编辑:由于内部限制,我无法提供应用程序的图像,但实际上我需要为我的按钮使用不同的背景,因为“wrap_content”考虑了背景大小(以像素为单位),由于密度较低,因此在S4 mini上使它们更大。如果不这样做,S4上的按钮太大而且重叠。
提前致谢!
答案 0 :(得分:0)
在物理尺寸方面,我有着巨大的差异 老实说,想知道" Device Independent" 测量报告每个设备的宽度相同
这两个设备肯定在dp中具有相同的屏幕尺寸。如下:
在1.0密度屏幕中1dp = 1px,
在1.5密度屏幕中1dp = 1.5px,
2.0密度屏幕中的1dp = 2.0px。
所以Note有1280 / 2.0 = 640dp而mini有960 / 1.5 = 640 dp。但是你应该记住,屏幕密度只是一个安卓工程师用来简化开发人员任务的桶。也就是说,如果一个设备是180dpi,它的密度为1.0,220dpi的屏幕密度为1.5
是否有其他方法可以为每台设备使用不同的布局文件?
这似乎不可能。
最后,如果你想完全控制你的布局,你可以尝试使用DisplayMetrics
在java代码中构建你的视图。(是的,这肯定不是一个好方法)。