热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android–为什么dpToPixel不应该用于设置布局尺寸?

为什么在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是使用浮点值定义的.这些和更多视图属性用于动画,因此使用平滑值是有意义的.如果手动设置,则使用整数来表示可预测的行为.


推荐阅读
author-avatar
-路人甲___
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有