作者:范晓伟


Android手机分辨率多种多样,作为开发者,做出的软件不能只兼顾一种或几种手机,而要在尽量多的手机上达到另我们满意的现实效果。Android在设计之初,系统就被设计为一个可以在多种不同分辨率的设备上运行的操作系统。对于应用程序来说,系统平台向它们提供的是一个稳定的,跨平台的运行环境,而关于如何将程序以正确的方式显示到它所运行的平台上所需要的大部分技术细节,都由系统本身进行了处理,无需程序的干预。但毕竟效果有限,有时候我们还需要自己针对设备的分辨率对程序优化。

在做五子棋的过程中,为了使布局更具有兼容性,找了一些关于分辨率的资料,网上能找到的基本都是使用DisplayMetrics来获取分辨率。经过自己的测试,发现还有一种方法能获取到分辨率,那就是使用android.view包里的Display类。

下面先介绍下DisplayMetrics的相关资料。


DisplayMetrics是android.util包里的一个类,类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。

为了获取DisplayMetrics 成员,首先初始化一个对象如下:

DisplayMetricsmetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics;

构造函数DisplayMetrics 不需要传递任何参数;调用getWindowManager()之后,会取得现有Activity 的Handle ,此时,getDefaultDisplay() 方法将取得的宽高维度存放于DisplayMetrics 对象中,而取得的宽高维度是以像素为单位(Pixel) ,“像素”所指的是“绝对像素”而非“相对像素”。

其实现代码如下:


private TextView textView;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);DisplayMetrics displayMetrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);String string = "手机屏幕分辨率为:" + displayMetrics.widthPixels + "x" + displayMetrics.heightPixels;textView = (TextView) findViewById(R.id.textView);textView.setText(string);}


下面介绍下我发现的另一种方法,那就是Display类,通过查找API可知,该类在android.view包里,描述为:Providesinformation about the display size and density

使用方法如下:


private TextView textView;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Display display = getWindowManager().getDefaultDisplay();String string = "手机的屏幕分辨率为:" + display.getWidth() + "x"+ display.getHeight();textView = (TextView) findViewById(R.id.textView);textView.setText(string);}


两种方法运行结果相同:




Display对象不仅可以通过调用getWidth()和getHeight()来获取屏幕分辨率,还可以通过getMetrics()方法来获取描述此屏幕尺寸和分辨率的DisplayMetrics对象。

DisplayMetrics displayMetrics= new DisplayMetrics();

display.getMetrics(displayMetrics);

另外,getOrientation ()还可以获得屏幕的方向,getRefreshRate()获取屏幕刷新率等。



更多相关文章

  1. Android(安卓)& 百度地图(1)显示地图
  2. Android获取手机号码(问题)
  3. Android(安卓)Hook Java的的一个改进版本
  4. Android之调用百度地图API规划当前位置到指定位置的路线
  5. Android学习笔记之界面控件大小dip及布局管理器嵌套使用
  6. Android(安卓)Studio apk打包,keystore.jks文件生成,根据keystore
  7. Android(安卓)关于dp dip sp px dpi density解析
  8. 如何通过看google工程师的提交记录获取第一手Android资料
  9. Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音

随机推荐

  1. java中jar包的使用
  2. 关于String、集合、数组的长度
  3. java后台对上传的图片进行压缩
  4. java的学习方法(转自黑马程序员)
  5. ArcGIS JS API For JavaScript实现类台风
  6. java线程池使用场景和使用方法较详细文摘
  7. 7-Flink的分布式缓存
  8. 【笔记】上传图片和音频
  9. java中多线程安全问题产生&解决方案——
  10. 面向 Java 开发人员的 Scala 指南:包和访