概念
##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()
来获取设备dpi
和density
信息,
然后在Application,activity
的create()
的方法中设置这些信息,此外,当 Activity
横屏旋转时,可以通过加入一个空白的Fragment
来监听并更改Activity
的屏幕密度.