Android中的dp,sp计算

首先介绍PPI(DPI),PPI和DPI其实都是相同的一个概念,只不过DPI是dots per inch和 PPI是pixels per inch。

一般我们说的5寸手机,5.5寸手机指的是手机屏幕对角线的长度。

根据勾股定理计算出对角线上的像素点个数,用来除以手机尺寸,即可得到PPI(DPI)值。

比如:

5寸,1920x1080分辨率,PPI=√(1920*+1080*)/5=440.5814340164597=441;

5.7寸,1920x1080分辨率,PPI=√(1920*+1080*)/5.7=386.4749421197015=387。

每个android手机的PPI(DPI)已经固定在rom里面了,一般不可以改变,可以通过DisplayMetrics类获取手机的DPI:

DisplayMetricsdisplayMetrics=getResources().getDisplayMetrics();

System.out.println("densityDpi:"+displayMetrics.densityDpi);

DPI对应DisplayMetrics类中的densityDpi,DisplayMetrics类的属性如下;


每个不同尺寸不同分辨率的手机,DisplayMetrics类中的density,scaledDesity等值都是不同的。

android中的dp,sp计算规则出自TypedValue类中,代码如下:

public static float applyDimension(int unit, float value,DisplayMetrics metrics)

{

switch (unit) {

case COMPLEX_UNIT_PX:

return value;

case COMPLEX_UNIT_DIP:

return value * metrics.density;

case COMPLEX_UNIT_SP:

return value * metrics.scaledDensity;

case COMPLEX_UNIT_PT:

return value * metrics.xdpi * (1.0f/72);

case COMPLEX_UNIT_IN:

return value * metrics.xdpi;

case COMPLEX_UNIT_MM:

return value * metrics.xdpi * (1.0f/25.4f);

}

return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容