一、屏幕尺寸
屏幕的实际大小,按照屏幕的对角线进行测量。为简单起见,Android所有屏幕大小分为四种尺寸:小,普通,大,超大。
屏幕长宽比Aspect ratio:是屏幕物理宽度与物理高度的比例关系。
二、分辨率
1、图像分辨率
图像中存储的信息量,是每英寸图像内有多少像素点,分辨率的单位为PPI(Pixels Per Inch),通常叫做:像素每英寸。
图像宽高决定了图像大小,图像质量由PPI来决定。所以一张图占用多大空间由宽高和PPI共同决定。例如:一幅图宽8英寸、高6英寸,分辨率为100PPI,则其占用总的像素数是800*600。
显示图像跟什么有关系:宽8英寸、高6英寸,分辨率为100PPI的显示效果和宽16英寸、高12英寸,分辨率为50PPI的显示效果可以相同。唯一区别是需要动态压缩或拉伸图片。所以,最重要还是跟总的像素大小相关。
2、手机屏幕分辨率
由以上可知,手机屏幕分辨率是屏幕横向长度XPPI X 屏幕纵向长度XPP。如iphone6的分辨率是1334X750。
三、屏幕密度
屏幕密度:单位英寸面积上的像素点数,即PPI,单位是dp或dip。android平台假定的默认显示设备的像素密度为160dpi。运行时,平台会以目标屏幕的密度作为基准,"透明地"处理所有需要的dip缩放操作。要把密度无关像素转为屏幕密度,可用这个公式:pixels=dips*(density/160)。比如DPI为240的屏幕上,1个dip等于1.5个物理像素。
ldpi:PPI为120;
mdpi:PPI为160;
hdpi:PPI为240;
xhdpi:PPI为320;
xxhdpi:PPI为480;
四、获取屏幕尺寸
需要先配置清单文件AndroidMainfest.xml
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true"/>
方法1)
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p)
方法2)
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
screenWidth = dm.widthPixels; // 屏幕宽(像素,如:480px)
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px)
方法3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
int screenWidthDip = dm.widthPixels; // 屏幕宽(dip,如:320dip)
int screenHeightDip = dm.heightPixels; // 屏幕宽(dip,如:533dip)
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕宽(px,如:480px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px)