在Android中,关于屏幕的宽度、高度等的信息都封装在DisplayMetrics 类中,获取 DisplayMetrics 的方法以下几种:

不需要用到 context 的:

第一种:

DisplayMetrics metrics = new DisplayMetrics();WindowManager manager = (WindowManager) context.getSystemService(Service.WINDOW_SERVICE);if (manager != null) {    manager.getDefaultDisplay().getMetrics(metrics);}

需要用到 context 的:

第二种:

DisplayMetrics metrics = context.getResources().getDisplayMetrics();

第三种:

DisplayMetrics metrics = new DisplayMetrics();context.getDisplay().getMetrics(metrics);

第四种:与第三种的方式类似,通过ApplicationContext获取。

DisplayMetrics metrics = new DisplayMetrics();context.getApplicationContext().getDisplay().getMetrics(metrics);

 拿到DisplayMetrics之后,就可以访问里面的属性了:

// 屏幕的逻辑密度,是密度无关像素(dip)的缩放因子,160dpi是系统屏幕显示的基线,1dip = 1px, 所以,在160dpi的屏幕上,density = 1, 而在一个120dpi屏幕上 density = 0.75。float density = metrics.density; //  屏幕的绝对宽度(像素)int screenWidth = metrics.widthPixels;// 屏幕的绝对高度(像素) int screenHeight = metrics.heightPixels;  //  屏幕上字体显示的缩放因子,一般与density值相同,除非在程序运行中,用户根据喜好调整了显示字体的大小时,会有微小的增加。float scaledDensity = metrics.scaledDensity;// X轴方向上屏幕每英寸的物理像素数。float xdpi = metrics.xdpi; // Y轴方向上屏幕每英寸的物理像素数。float ydpi = metrics.ydpi; // 每英寸的像素点数,屏幕密度的另一种表示。densityDpi = density * 160.float desityDpi = metrics.densityDpi; ...

 

更多相关文章

  1. Android(安卓)获取屏幕高宽度,密度,通知栏高度,截图等常用方法
  2. Android图像处理_浮雕效果
  3. Android中设置屏幕全屏两种方法:
  4. [置顶] android 抽屉效果,内容GridView来实现单行滑动
  5. android camera(一):camera模组CMM介绍
  6. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  7. Android系统配置数据库注释(settings.db)
  8. android 分辨率及密度详细
  9. Android屏幕常亮

随机推荐

  1. ubuntu android 源码下载
  2. Android下实现一个手机监控摄像头
  3. 13个对Android开发者有帮助的工具和资源
  4. 命令获取 Eclipse Android(安卓)证书指纹
  5. php、java、android、ios通用的3des+base
  6. PHP验证字符串中是否包含指定字符串
  7. PHP截取指定字符[【前面】和【后面】的内
  8. ModStartCMS Laravel9 模块化建站系统v3.
  9. js留言板
  10. PHP实现倒计时功能