pep*_*kin 5 android android-layout
为什么在 javadocs for dpToPixel(declared here ) 中声明它不应该用于设置布局尺寸?
我们不使用像素来定义布局尺寸。使用与密度无关的像素可确保在各种设备上使用适当的布局尺寸。这意味着布局在 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
Run Code Online (Sandbox Code Playgroud)
现在您可以在布局中使用这些值,pxOffset用于填充、边距等(可以为零)以及pxSize宽度和高度(确保至少 1px 大小,除非为零)。使用方法时会进行相同的计算int Resources.getDimensionPixelOffset(int),int Resources.getDimensionPixelSize(int)哪些方法适用于布局,float Resources.getDimension(int)哪些适用于精确绘图。
高程使用float值,因此使用精确尺寸完全没问题。
TranslationX、translationY 或 translationZ 是使用float值定义的。这些以及更多视图属性用于动画,因此使用平滑值是有意义的。如果手动设置,请使用整数来实现可预测的行为。