google从android 3.2版本之后使用sw**dp方式来进行多屏幕适配,那么屏幕的具体dp值多少?
为了确定设备屏幕的dp值,查找了些关于屏幕px,sp,dp值计算的资料。
这里呢,我把px2dp的方法贴出来以供大家参考:
/**
* 将px值转换为dip或dp值,保证尺寸大小不变
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
公式也是蛮简单的。为了了解更多的内容信息,我这里呢查看了官方api的资料和源码资料来做参考。
开发安卓应用,总不免会遇到屏幕适配问题。google官方api也给我们讲了非常多的适配方法,其中谷歌采用dp值的屏幕宽高度量单位目的就是为了在尺寸相近的设备屏幕上展示相近的界面效果,并且按照屏幕的像素密度ppi划分了一些标准,以供开发人员适配,大家都知道在android工程的res中的drawable可以使ldpi,mdpi,hdpi,xhdpi等限令名来按屏幕适配,这些划分在源码中也能很容易的找到:
android源码中负责屏幕密度计算的类是DisplayMetrics。
在这个类的属性变量声明部分,我们看到了api中提到的屏幕密度分类(这里以android20版本源码作为参考,其他版本原理一致):
public static final int DENSITY_LOW = 120;
public static