1
ysc3839 2019-03-13 22:09:56 +08:00
DisplayMetrics.densityDpi 是系统里设置的 DPI,不代表实际屏幕的 DPI。
|
2
cxtrinityy OP @ysc3839 即使这样,也无法解释相同尺寸和分辨率的 pad 具有不同 dpi 这个问题,所以我好奇到底哪一环漏了
|
3
ysc3839 2019-03-13 23:10:33 +08:00
@cxtrinityy 系统里设置不同就不同了。
|
4
cxtrinityy OP @ysc3839 但是单位 dp 对应到屏幕的物理大小的确在两台 pad 上是不一样的,同样的布局在两台 pad 上展示并不相同,那么这些设置对 dp 的计算会产生什么样的影响?考虑实际 dpi 本身就是为了适配,即使这些设置不代表实际 dpi,但确切的对适配上产生了影响
|
5
cxtrinityy OP @ysc3839 我知道问题在哪了,DisplayMetrics.xdpi/ydpi 代表的是实际的物理 dpi,这个值两个 pad 返回的都是 224、225 左右,我的布局出现偏差问题在于我绘制布局的时候调用了 Resource.getDimensionPixelSize 这个方法来转换 dp,而这个转换方法是以 dp*DisplayMetrics.density , 这个 density 正是你说的系统设置的 densityDp 相对于基准 160 的缩放倍率
我只要用 xdpi 计算实际的 dpi 的缩放倍率来重新计算应该就可以解决我的问题了 |