android - 创建一个新的 sw<xxx>dp 限定符

标签 android android-layout android-resources

我有 7 英寸平板电脑和 10 英寸平板电脑的限定符,分别是 sw600dp 和 sw720dp。我不明白这些数字是如何得出的。

我想为屏幕尺寸小于 4 英寸的手机创建一个新布局。请解释一下我应该如何使用最小宽度限定符来做到这一点。

最佳答案

请结帐"Configuration example"首先是官方文档部分。它很好地解释了使用什么以及何时使用。在您的情况下,没有限定符的默认布局文件夹用于手机。

什么是最小宽度限定符?最小宽度为

The fundamental size of a screen, as indicated by the shortest dimension of the available screen area. Specifically, the device's smallestWidth is the shortest of the screen's available height and width (you may also think of it as the "smallest possible width" for the screen).

例如,您的手机屏幕尺寸为 480x800 dp。此设备的最小宽度将是这两个值中的最小值,即 480dp。如果您旋转设备,最小值将保持不变 - 480dp。

如何使用最小宽度限定符?当你创建一个布局时,你总是期望有一个最小宽度,有了它看起来会很好。低于此最小值,您的布局会被挤压并且看起来不太好。为了确保这不会发生在它身上,你把它放在带有 sw<N>dp 的文件夹中。限定符,当 N 为最小允许宽度时。

值得一提的是,因为最小宽度不依赖于方向,您应该使用 land 自行处理横向和纵向方向。或 port预选赛。尽管这种方法可行,但处理不同的宽度和方向很快就会变得复杂。为了解决这个问题,还有另一种方法称为响应式移动设计。我建议阅读系列文章"Deep dive into responsive mobile design"以便更好地理解。

更新:

从px计算dp的公式如下:

dp = px / (ppi / 160dp)

Nexus 7 取sw-600dp,因为所有的计算都是基于getResources().getDisplayMetrics().density在设备中编码的值。这不是实际值,而是四舍五入的值。对于 Nexus 7 (2013),实际值为 323/160 = 2.01875。设备中编码的值为2,对应sw-600dp。这是一些像素丢失的地方。

关于android - 创建一个新的 sw<xxx>dp 限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21214274/

相关文章:

android - 'setConfigSettings(FirebaseRemoteConfigSettings!): Unit' is deprecated

在使用 Android Gradle 插件 3.6.2 进行注释处理期间,Android R 类不可用

Android:如何查询存储桶名称列表

java - 安卓定时通知报错

java - 滑动刷新后加载更多不起作用

android - 文本大小维度声明的最佳实践

android - 在哪里以及如何找到 Android 类使用的布局文件?

android - mdpi、hdpi、xhdpi 和 xxhdpi 的图像分辨率

java - 自定义字体单选按钮未检测到单击

Android 和 iPhone UI 组件比较