在Android开发中,获取手机屏幕像素的方法有多种。在这里,我仅仅做一个小小的总结,将这些方法分为两类。一类是使用Activity类来获取,另一类便是使用上下文(Context)来获取。

/*** @ 获取当前手机屏幕的尺寸(单位:像素)*/
public static float getPingMuSize(Context mContext) { int densityDpi = mContext.getResources().getDisplayMetrics().densityDpi;float scaledDensity = mContext.getResources().getDisplayMetrics().scaledDensity;float density = mContext.getResources().getDisplayMetrics().density;float xdpi = mContext.getResources().getDisplayMetrics().xdpi;float ydpi = mContext.getResources().getDisplayMetrics().ydpi;int width = mContext.getResources().getDisplayMetrics().widthPixels;int height = mContext.getResources().getDisplayMetrics().heightPixels;// 这样可以计算屏幕的物理尺寸float width2 = (width / xdpi)*(width / xdpi);float height2 = (height / ydpi)*(width / xdpi);return (float) Math.sqrt(width2+height2);
}

有一些需求是获取屏幕的大小像素

        // 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象Display display = getActivity().getWindowManager().getDefaultDisplay();// 方法一(推荐使用)使用Point来保存屏幕宽、高两个数据Point outSize = new Point();// 通过Display对象获取屏幕宽、高数据并保存到Point对象中display.getSize(outSize);// 从Point对象中获取宽、高int x = outSize.x;int y = outSize.y;// 通过吐司显示屏幕宽、高数据522Toast.makeText(context, "手机像素为:X:" + x + "  Y:" + y, Toast.LENGTH_LONG).show();

获取屏幕宽高及尺寸的方法

     // 通过WindowManager获取DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);System.out.println("width-display :" + dm.widthPixels);System.out.println("heigth-display :" + dm.heightPixels);// 通过Resources获取DisplayMetrics dm2 = getResources().getDisplayMetrics();System.out.println("width-display :" + dm2.widthPixels);System.out.println("heigth-display :" + dm2.heightPixels);// 获取屏幕的默认分辨率Display display = getWindowManager().getDefaultDisplay();System.out.println("width-display :" + display.getWidth());System.out.println("heigth-display :" + display.getHeight());
    private static double mInch = 0;  /** * 获取屏幕尺寸 * @param context * @return */  public static double getScreenInch(Activity context) {  if (mInch != 0.0d) {  return mInch;  }  try {  int realWidth = 0, realHeight = 0;  Display display = context.getWindowManager().getDefaultDisplay();  DisplayMetrics metrics = new DisplayMetrics();  display.getMetrics(metrics);  if (android.os.Build.VERSION.SDK_INT >= 17) {  Point size = new Point();  display.getRealSize(size);  realWidth = size.x;  realHeight = size.y;  } else if (android.os.Build.VERSION.SDK_INT < 17  && android.os.Build.VERSION.SDK_INT >= 14) {  Method mGetRawH = Display.class.getMethod("getRawHeight");  Method mGetRawW = Display.class.getMethod("getRawWidth");  realWidth = (Integer) mGetRawW.invoke(display);  realHeight = (Integer) mGetRawH.invoke(display);  } else {  realWidth = metrics.widthPixels;  realHeight = metrics.heightPixels;  }  mInch =formatDouble(Math.sqrt((realWidth/metrics.xdpi) * (realWidth /metrics.xdpi) + (realHeight/metrics.ydpi) * (realHeight / metrics.ydpi)),1);  } catch (Exception e) {  e.printStackTrace();  }  return mInch;  }  /** * Double类型保留指定位数的小数,返回double类型(四舍五入) * newScale 为指定的位数 */  private static double formatDouble(double d,int newScale) {  BigDecimal bd = new BigDecimal(d);  return bd.setScale(newScale, BigDecimal.ROUND_HALF_UP).doubleValue();  }

另提一点,我们通常所指的屏幕上的int尺寸是像素单位,如需在java代码中使用dp设定宽高请参考以下两个方法。

//pixel = dip*density;
private int convertDpToPixel(int dp) {  DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();  return (int)(dp*displayMetrics.density);
}  private int convertPixelToDp(int pixel) {  DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();  return (int)(pixel/displayMetrics.density);
}

以及动态设置View宽高的方法

//获取view 的布局参数
ViewGroup.LayoutParams layoutParams = mShareBackgroundSign.getLayoutParams();
//设置宽度,也可自定义
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
//设置高度
layoutParams.height = layoutParams.height = convertDpToPixel(480);;
//重新给view设置布局参数
mShareBackgroundSign.setLayoutParams(layoutParams);

Android 获取屏幕大小以及尺寸相关推荐

  1. android 获取屏幕的物理尺寸

    计算方法:获取到屏幕的分辨率:point.x和point.y,再取出屏幕的DPI(每英寸的像素数量),计算长和宽有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi, ...

  2. android获取屏幕的物理尺寸

    /** * @ 获取当前手机屏幕尺寸 */ public static float getPingMuSize(Context mContext) {int densityDpi = mContext ...

  3. 获取屏幕大小 android,Android获取屏幕大小

    屏幕像素--包含虚拟键 华为P9,参数规格: 分辨率 FHD 1920×1080 获取屏幕像素 DisplayMetrics dm = new DisplayMetrics(); getWindowM ...

  4. android获取软件大小,android获取屏幕大小包括状态栏和软件导航栏的大小

    自API 17(JELLY_BEAN_MR1)以来添加了软件导航,因此我们只需要在API 17及更高版本中包含导航栏的大小. 并注意,当您获得屏幕尺寸时,它基于当前方向. public void se ...

  5. android获取屏幕尺寸,像素

    public void getScreen(){// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获 取获取Disp ...

  6. wift - 使用UIScreen类获取屏幕大小尺寸

    UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen. ...

  7. Android自适应屏幕大小和布局

    一:不同的layout  Android手机屏幕大小不一,有480x320, 640x360, 800x480,854x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下 ...

  8. android获取键盘状态,Android获取屏幕方向及键盘状态的小例子

    Android获取屏幕方向及键盘状态的小例子 复制代码 代码如下: Configuration config = getResources().getConfiguration(); if (conf ...

  9. android 获取屏幕的宽高

    今天,讲讲android如何获取屏幕的宽高. // 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManag ...

最新文章

  1. mysql递归查询所有上下节点_【转】MySQL之Spider存储引擎原理详解
  2. CSS基础(part7)--字体样式属性
  3. JAVA_WEB--jsp概述
  4. 点击User Profile Service Application 报错
  5. oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接
  6. Android启示录——开始Android旅途
  7. 如何在springboot中使用PageHelper分页插件
  8. 华科计算机系研究生遗书,看完华中科大研究生遗书《狗血的研究生生涯》,泪目了!有话要说...
  9. windows游戏编程 (一) 了解WinMain函数,创建一个信息框
  10. win10内存占用率高达95%解决方法
  11. ps添加的阴影怎么去除_PS怎么把阴影去掉
  12. 19网站实现QQ登录功能
  13. 爬取链家所有房源信息(在售、成交、租房)
  14. POJ 1375 Intervals
  15. PNAS | 南农张瑞福组揭示了微生物肥料功能菌根际趋化的信号识别新机制
  16. 参数服务器——分布式机器学习的新杀器
  17. 数字图像处理第十章 图像分割
  18. 基于多目标灰狼算法的冷热电综合三联供微网低碳经济 MATLAB 仿真
  19. 【短视频运营】短视频剪辑 ① ( 下载软件 | 安装软件 | 简单使用 )
  20. 查看Java虚拟机的运行状态

热门文章

  1. 红外光谱—专项文献阅读
  2. 怎么用css设置滚动条
  3. 联想z5 Android 9.0,联想Z5官方自曝:搭载安卓9.0系统 “秒杀”MIUI
  4. java 计算 两个日期 相差多少天
  5. 一种奇特的DEDE隐藏后门办法
  6. Knockout入门介绍
  7. WebDriver概述
  8. 使用eclipse打包Maven项目
  9. SpringBoot调用第三方IP查询接口(Https)
  10. uniapp七牛云上传图片or视频