首先dip dp sp px 的区别。
dip==dp 一般 android 中设置控件的位置大小的时候用。与像素无关,与硬件无关,自适应屏幕。
sp 一般在android中用于设置字体大小(google 推荐)。
px 像素,与硬件设备有关,不推荐在android上使用。
获取手机屏幕分辨率
DisplayMetrics dm = new DisplayMereics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float width = dm.widthPixels * dm.density;
float height = dm.heightPixels * dm.density;
在这里问什么要乘以 dm.density 了,是因为通过dm.widthPixels的到的结果始终是320,不是真实的屏幕分辨率,所以要乘以dm.density得到真实的分辨率。
下面在说一下dip的概念:
英文解释为device independent pixel 设备独立像素
相同的dip,在不同分辨率的屏幕上,如果分辨率与密度比例相同,那么在屏幕的相对长度是一样的。
这个地方提到了屏幕密度,屏幕密度的单位是 像素/英寸。
那么再说一下 几个概念:
我们常说的320*480 480*800这个与物理大小无关,与屏幕密度,大小有关,指的是长宽分别有多少像素。
假如说屏幕密度是240 像素/英寸 分辨率为480*800
那么长度就为800/240 =3.333 英寸 宽度为480/240=2英寸
屏幕大小即为3.333*2
假如说屏幕密度是160 像素/英寸
屏幕大小与上面的一样的话,那么就可以算出屏幕的分辨率是多少
在此得到屏幕分辨率为320*533