为什么在
dpToPixel
的 javadocs(声明于这里)中指出不应该使用它来设置布局尺寸?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
(除非为零,否则至少保证为1像素)。当使用方法int Resources.getDimensionPixelOffset(int)
和int Resources.getDimensionPixelSize(int)
时,会进行相同的计算,适用于布局,float Resources.getDimension(int)
适用于精确绘制。
高程使用float
值,因此使用精确尺寸完全没有问题。
TranslationX、translationY或translationZ使用float
值定义。这些以及许多其他的视图属性用于动画处理,所以使用平滑的值是有意义的。如果手动设置,请使用整数以获得可预测的行为。