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

1、使用Activity类中的方法来获取,使用范围是在Activity的类及子类中和有传入Activity类及子类的对象参数的方法中使用
①在Activity的子类中使用

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象Display display = getWindowManager().getDefaultDisplay();// 方法一(推荐使用)使用Point来保存屏幕宽、高两个数据Point outSize = new Point();// 通过Display对象获取屏幕宽、高数据并保存到Point对象中display.getSize(outSize);// 从Point对象中获取宽、高int x = outSize.x;int y = outSize.y;// 通过吐司显示屏幕宽、高数据Toast.makeText(this, "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show();// 方法二(不推荐使用)直接通过Display对象获取屏幕宽、高数据int width = display.getWidth();int height = display.getHeight();// 通过吐司显示屏幕宽、高数据Toast.makeText(this, "手机像素为:" + width + "x" + height, Toast.LENGTH_LONG).show();}
}

②在传入Activity类及子类对象的方法中调用

public class Utils {/*** 该方法获取屏幕分辨率的值* @param activity 调用此方法的Activity对象* @return Point 存有屏幕分辨率的对象*/public static Point getSize(Activity activity) {// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象Display display = activity.getWindowManager().getDefaultDisplay();// 使用Point来保存屏幕宽、高两个数据Point outSize = new Point();// 通过Display对象获取屏幕宽、高数据并保存到Point对象中display.getSize(outSize);return outSize;}
}
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 通过调用Utils类中的getSize方法,传入当前Activity作为参数获取Point outSize = Utils.getSize(this);// 从Point对象中获取宽、高int x = outSize.x;int y = outSize.y;// 通过吐司显示屏幕宽、高数据Toast.makeText(this, "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show();}
}

2、使用上下文(Context)获取系统服务来获取,使用范围是在一些没有Activity及其子类对象而只有上下文(Context)的类或者方法中,比如Fragment类及其子类中。

public class Utils {/*** 该方法获取屏幕分辨率的值* * @param context*            调用此方法的上下文对象* @return Point 存有屏幕分辨率的对象*/public static Point getSize(Context context) {// 通过上下文的getSystemService()方法获取系统服务来获取WindowManager对象WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);// 通过WindowManager对象的getDefaultDisplay()方法获取Display对象Display display = windowManager.getDefaultDisplay();// 使用Point来保存屏幕宽、高两个数据Point outSize = new Point();// 通过Display对象获取屏幕宽、高数据并保存到Point对象中display.getSize(outSize);return outSize;}
}
public class MyFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.activity_fragment, null);// 通过调用Utils类中的getSize方法,通过View对象的getContext()方法获取Context对象作为参数获取Point对象Point outSize = Utils.getSize(view.getContext());// 从Point对象中获取宽、高int x = outSize.x;int y = outSize.y;// 通过吐司显示屏幕宽、高数据Toast.makeText(view.getContext(), "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show();return view;}
}

3、上面演示了两种分别以Activity和Context作为参数获取屏幕分辨率的方法,如果是仅仅有两种单独的使用,那么分别选用两种方法的对应条件下的方法使用即可。但是如果同时需要在Activity中调用,也需要在Fragement中调用来获取分辨率,其实只需要一个方法也就可以了,那就是以Activity作为参数的。因为Activity是Context的子类,在Context作为参数传入该方法时,只要强制将Context转换成Activity类型就可以了。

public class Utils {/*** 该方法获取屏幕分辨率的值* @param activity 调用此方法的Activity对象* @return Point 存有屏幕分辨率的对象*/public static Point getSize(Activity activity) {// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象Display display = activity.getWindowManager().getDefaultDisplay();// 使用Point来保存屏幕宽、高两个数据Point outSize = new Point();// 通过Display对象获取屏幕宽、高数据并保存到Point对象中display.getSize(outSize);return outSize;}
}
public class MyFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.activity_fragment, null);// 通过调用Utils类中的getSize方法,通过View对象的getContext()方法获取Context对象,并且强制转换成Activity作为参数获取Point对象Point outSize = Utils.getSize((Activity)view.getContext());// 从Point对象中获取宽、高int x = outSize.x;int y = outSize.y;// 通过吐司显示屏幕宽、高数据Toast.makeText(view.getContext(), "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show();return view;}
}

4、有两个类可以获取到屏幕的像素,之前我们使用到的都是Display类,这个类保存着关于屏幕的很多相关的参数,分辨率只是其中的一个。这里要介绍的另一个类是DisplayMetrics类,这个类保存的就是屏幕像素相关的内容。在Display的getSize()方法中,也是将DisplayMetrics的关于屏幕像素的宽、高设置于Point中。

//Display
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取Display对象Display display = getWindowManager().getDefaultDisplay();Point outSize = new Point();display.getSize(outSize);int x = outSize.x;Toast.makeText(this, "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show();}
}
//DisplayMetrics
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 声明一个DisplayMetrics对象DisplayMetrics metrics = new DisplayMetrics();// 获取Manager对象后获取Display对象,然后调用getMetrics()方法getWindowManager().getDefaultDisplay().getMetrics(metrics);// 从DisplayMetrics对象中获取宽、高int heightPixels = metrics.heightPixels;int widthPixels = metrics.widthPixels;// 通过吐司显示屏幕宽、高数据Toast.makeText(this, "手机像素为:" + widthPixels + "x" + heightPixels, Toast.LENGTH_LONG).show();}
}

Android中的手机屏幕像素的几种获取方式相关推荐

  1. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)

    这里总结下android中关于手机屏幕的相关操作: 1.获取屏幕的分辨率(因为android中处理显示的时候,需要根据屏幕分辨率的不同才去不同的布局或显示不同的素材) <uses-sdk and ...

  2. android手机像素比例,用数据说话 手机屏幕像素密度变化历程和趋势

    用数据说话 手机屏幕像素密度变化历程和趋势 2018年05月16日 01:00作者:张哲编辑:张哲文章出处:泡泡网原创 分享 现在,手机各种软硬件都在飞速换代和改进之中,尤其是显示屏.18比9.全面屏 ...

  3. android 自动亮屏解锁,android 点亮手机屏幕与屏幕解锁方法

    android 点亮手机屏幕与屏幕解锁方法 点亮手机屏幕 1.记得加权限 [html] PowerManager pm = (PowerManager)getSystemService(POWER_S ...

  4. [Android] Eclipse Android中设置模拟器屏幕大小几种方法

    在Eclipse Android中设置模拟器屏幕大小是本文要介绍的内容,主要是来了解并学习Eclipse Android中模拟器的设置,具体关于Eclipse Android内容的详解来看本文  . ...

  5. android启动其他app的服务器,Android中通过外部程序启动App的三种方法

    这篇文章主要介绍了Android中通过外部程序启动App的三种方法, 本文讲解了直接通过包名. 通过自定义的Action. 通过Scheme三种方法,并分别给出操作代码,需要的朋友可以参考下 ==== ...

  6. Android中监听Home键的4种方法总结

    本文主要介绍了Android中监听Home键的4种方法总结,主要讲解了onSaveInstanceState方法.onUserLeaveHint方法.ACTION_CLOSE_SYSTEM_DIALO ...

  7. android的xml解析方式,Android中对xml文件解析的3种方式总结

    前言 xml 是数据传输的一种格式,Android 中的布局文件.设置文件等都采用它来表示.Android 中对 xml 文件的解析也有多种方式,下面介绍常用的 3 种方式: Dom . SAX 和 ...

  8. SpringBoot中对于异常处理的提供的五种处理方式

    SpringBoot中对于异常处理的提供的五种处理方式 参考文章: (1)SpringBoot中对于异常处理的提供的五种处理方式 (2)https://www.cnblogs.com/weirdo-l ...

  9. Spring中的AOP切面编程的三种实现方式

    文章目录 Spring中的AOP切面编程的三种实现方式 1.最基本AOP的实现 a.引入jar包 b.编写通知类,这里以后置通知和环绕通知类为例子进行说明 c.在SpringIOC容器中配置 d.测试 ...

最新文章

  1. SAP PM 入门系列11 - 一个维护通知单只能创建一个维护订单?
  2. JS(JavaScript)的深入了解1(更新中···)
  3. 冠状病毒如何杀灭最高效?这里有一份几十年的实验汇总
  4. 阿里P8架构师整理的架构图你看过吗
  5. 电脑显示没有被指定在上运行_可以桌面显示的便条便签怎么弄?有没有电脑桌面上的便条贴...
  6. 【C】sizeof(空结构体/空类)的大小
  7. 【论文写作】课程指导平台的开发中界面设计如何写
  8. 深度神经网络:特点、问题及解决
  9. 前端数据修改的两种方式
  10. [ThinkPHP]打开页面追踪调试
  11. 线性代数及其应用(英文第四版)下载
  12. 工业物联网的体系架构
  13. word自带公式编辑_原来有这样几种方式打开Word中的公式编辑器
  14. LSB 图像隐写与提取算法
  15. python量化策略——改进的美林时钟轮动策略(三)
  16. 多模态模型 CLIP4Clip 带你实现文本与视频互搜
  17. (C/C++)数据结构所需的程序语言基础(一)数据类型、运算符及表达式
  18. js点击重置按钮重置表单
  19. 汇编实现乐曲演奏《两只老虎》
  20. 【踩坑记录】为VMware虚拟机引用主机代理

热门文章

  1. 记录学习 - 分区函数Partition By的使用
  2. 头部ct能检查出什么_脑部ct能检查出什么
  3. slotformatcombinations_向未授权频谱中的小区应用时隙格式指示的方法和设备与流程...
  4. 日语里面用言连体,连用,终止形分别是什么
  5. 问题:如何查询宇视摄像机/摄像头规格参数
  6. 【ybt金牌导航2-3-3】【luogu P3975】K小子串 / 弦论
  7. 30分钟理解关键链--《突破项目的瓶颈--关键链 》读书笔记
  8. 电容笔和触控笔有什么区别?第三方电容笔了解下
  9. windows执行cygwin慢问题
  10. 欧拉定理、快速幂与逆元