为什么在 dpToPixel
(声明为 here)的 javadocs 中声明它不应该用于设置布局尺寸?
最佳答案
我们不使用像素来定义布局尺寸。使用与密度无关的像素 可确保在各种设备上实现适当的布局尺寸。这意味着所述布局在 4 英寸手机和 7 英寸平板电脑上的视觉尺寸大致相同。 (这与手头的问题完全无关:))
话虽如此,实际的布局尺寸(例如 LayoutParams
类)实际上是使用整个 像素来定义结果尺寸。这样使用dpToPixels
方法是可行的:
float px = dpToPixels(16, getResources()); // 16 dp to pixels precise
int pxOffset = (int) px; // 16dp rounded down to whole pixels
int pxSize = (int) (0.5f + px); // 16dp rounded up to whole pixels
现在您可以在布局中使用这些值,pxOffset
用于填充、边距等(可以为零),pxSize
用于宽度和高度(确保在至少 1px 大小,除非为零)。使用适用于布局和 float 资源的
适用于精确绘图。int Resources.getDimensionPixelOffset(int)
和 int Resources.getDimensionPixelSize(int)
方法时,会进行相同的计算.getDimension(int)
编辑
Elevation 使用 float
值,因此使用精确尺寸完全没问题。
TranslationX、translationY 或 translationZ 是使用 float
值定义的。这些和更多 View 属性用于动画,因此使用平滑值是有意义的。如果手动设置,则使用整数来实现可预测的行为。
关于android - 为什么不应该使用 dpToPixel 来设置布局尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300379/