安卓动态DPI


概念

##px
物理像素点,经常说的分辨率的单位就是px
##dpi
屏幕密度,即每英寸的像素个数,一英寸等于2.54厘米
$dpi = \frac{\sqrt{width^2+height^2}}{diagonal}$
其中$width,height$为屏幕的分辨率,单位为px;$diagonal$为屏幕对角线长度,单位为英寸

density

屏幕密度比例,与标准屏幕(即dpi=160)的比例
$density = \frac{dpi}{160}$

dp

虚拟像素点
$dp = px*density = px * \frac{dpi}{160}$

实现原理

只设计一份dimens.xml,不同机型通过调整缩放比例来保持一致
关键在于通过context.getResources().getDisplayMetrics()来获取设备dpidensity信息,
然后在Application,activitycreate()的方法中设置这些信息,此外,当 Activity横屏旋转时,可以通过加入一个空白的Fragment来监听并更改Activity的屏幕密度.


文章作者: Hiper
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hiper !
  目录