安卓动态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的屏幕密度.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容