经过多年使用特定于像素的Android布局的工作,我遇到了“ nnndpi”限定词。我还没有专门针对三星Galaxy S8来将其与从sw360dp-xxxhdpi文件夹中拉出的其他设备分开。 sw360dp-xxxhdpi也以S7为目标,因此,当在xml文件中定义marginLeft时,这两个设备实际上显示某些屏幕元素关闭了60dp。
我试图定义h740dp和h740dp-xxxhdpi,568dpi,142dpi,以及我从这个出色的设备规格资源中想到的其他一些变化:https://material.io/tools/devices
我一直无法针对S8并认为必须有一种针对这种特定设备和市场上任何其他设备的方法(无论这是否是不良的设计实践)。
最佳答案
三星Galaxy S8屏幕的xxxhdpi为360dp x 740dp。您可以用来定位此屏幕的资源限定符是:sw360dp
(最小宽度)-S8将始终与之匹配w360dp
(可用宽度)-S8将与之匹配,而不管其方向如何(因为横向宽度将超过360dp)h740dp
(可用高度)-S8将与肖像相匹配(尽管不完全相同;请参见下文)xxxhdpi
(像素密度)-S8将始终与此匹配h740dp
限定词的问题是“可用的宽度/高度”限定词不能提供实际的屏幕尺寸;它们会减去状态栏和导航栏之类的持久UI。状态栏通常为24dp,导航栏较大(通常为48dp或更大),但不能保证所有这些(如果使用fitsSystemWindows
或以其他方式隐藏这些栏,则可以获得不同的结果)。
最重要的是,您执行的任何基于屏幕尺寸的“定位”都将始终具有定位其他设备的潜力,因为没有什么可以阻止LG制造具有xxxhdpi屏幕(至少360x740dp)的手机。
在一起,这意味着您不应该做自己在做的事情。但是,如果必须这样做,那么我将尝试使用这组限定词:纵向的layout-sw360dp-h668dp-xxxhdpi
(您可以试验用于hXXXdp
的确切数字以说明状态和导航栏),对于横向的layout-sw360dp-w740dp-xxxhdpi
。
关于java - 将nnndpi用于Android布局文件夹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53055398/