gpt4 book ai didi

java - 将 nnndpi 用于 Android 布局文件夹

转载 作者:行者123 更新时间:2023-11-29 23:28:54 34 4
gpt4 key购买 nike

在多年使用像素特定的 Android 布局之后,我遇到了“nnndpi”限定符。我无法专门针对 Samsung Galaxy S8 将其与从 sw360dp-xxxhdpi 文件夹中拉出的其他设备分开。 sw360dp-xxxhdpi 也以 S7 为目标,因此在 xml 文件中定义 marginLeft 时,这两个设备实际上将某些屏幕元素显示为大约 60dp。

我尝试定义 h740dp 和 h740dp-xxxhdpi、568dpi、142dpi,以及我从这个很棒的设备规范资源中想到的其他一些变体:https://material.io/tools/devices

我无法针对 S8,并且认为必须有一种方法可以针对此特定设备和市场上的任何其他设备(无论这是否是一个糟糕的设计实践)。

最佳答案

Samsung Galaxy S8 屏幕为 360dp x 740dp xxxhdpi。可用于定位此屏幕的资源限定符是:

  • sw360dp(最小宽度)- S8 将始终匹配它
  • w360dp(可用宽度)- 无论方向如何,S8 都会匹配此值(因为横向宽度将超过 360dp)
  • h740dp(可用高度)- S8 将在纵向上与此匹配(但不完全相同;请参见下文)
  • xxxhdpi(像素密度)- S8 将始终匹配此值

h740dp 限定符的问题在于“可用宽度/高度”限定符不提供物理屏幕尺寸;他们减去持久的用户界面,比如状态栏和导航栏。状态栏通常为 24dp,导航栏更大(通常为 48dp 或更多),但这两者都不能保证(如果您使用 fitsSystemWindows 或以其他方式隐藏这些栏,那么您会得到不同的结果) .

最重要的是,您根据屏幕尺寸进行的任何“定位”总是有可能定位到其他设备,因为没有什么可以阻止 LG 开发具有至少 360x740dp 的 xxxhdpi 屏幕的手机。

总而言之,这意味着您不应该做您正在做的事情。但如果你必须这样做,那么我会尝试这组限定符:layout-sw360dp-h668dp-xxxhdpi 用于肖像(你可以试验用于 hXXXdp 的确切数字> 考虑状态栏和导航栏)和 layout-sw360dp-w740dp-xxxhdpi 横向。

关于java - 将 nnndpi 用于 Android 布局文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53055398/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com