笔记80--android中的分辨率和屏幕密度,获取屏幕大小

一、屏幕尺寸
屏幕的实际大小,按照屏幕的对角线进行测量。为简单起见,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)  





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值