作者:-路人甲___ | 来源:互联网 | 2023-09-23 16:27
为什么在javadocs中为dpToPixel(声明为here)声明它不应该用于设置布局尺寸?解决方法:我们不使用像素来定义布局尺寸.使用与密度无关的像素可确保各种设备的正确布局尺
为什么在javadocs中为dpToPixel(声明为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
现在您可以在布局中使用这些值,pxOffset用于填充,边距等(可以为零)和pxSize用于宽度和高度(确保至少1px大小,除非为零).当使用适合与布局和浮动Resources.getDimension(int)一起使用的资源时,在Resource.getDimensionPixelOffset(int)和int Resources.getDimensionPixelSize(int)中使用适合精确绘制的方法时,进行相同的计算.
编辑
Elevation使用浮点值,因此使用精确尺寸是完全正确的.
TranslationX,translationY或translationZ是使用浮点值定义的.这些和更多视图属性用于动画,因此使用平滑值是有意义的.如果手动设置,则使用整数来表示可预测的行为.