?? ? ?在开发手机的应用程序时,除了底层对API的掌握之外,屏幕分辨率的概念也是相当的重要的,而且在当今,各家手机生产厂商的手机屏幕都大同小异(不过,也就几种),user UI接口呈现及布局自然也各异!? Android?可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。 手机的分辨率信息是手机的一项重要信息,很好的是,Android?已经提供DisplayMetircs?类可以很方便的获取分辨率。下面简要介绍?DisplayMetics?类: Andorid.util?包下的DisplayMetrics?类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。 为了获取DisplayMetrics?成员,首先初始化一个对象如下: DisplayMetrics metrics?=?new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 注:构造函数DisplayMetrics?不需要传递任何参数;调用getWindowManager()?之后,会取得现有Activity?的Handle?,此时,getDefaultDisplay()?方法将取得的宽高维度存放于DisplayMetrics?对象中,而取得的宽高维度是以像素为单位(Pixel)?,“像素”所指的是“绝对像素”而非“相对像素”。 ? 通过?DisplayMetrics的?toString()方法可以获取到?DisplayMetrics的大部分?fields信息,如下是在分辨率为?480x320情况下的一些输出信息: ? 其中,density为显示的逻辑分辨率(文档中说了很多,看得不是很明白);width及height就为屏幕分辨率(为绝对宽度与高度),与fields中的widthPixels及heightPixels一致;scaleDensity与density一致;xdpi及ydpi为准确物理像素。 下面我们来比较Android中dip, dp, px, sp之间的区别: dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。? 过去,程序员通常以像素为单位设计计算机用户界面。例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素,图标大小为16×16像素 等。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清 内容。?
?? ? ?下面介绍的DisplayMetrics类的对象记录了一些常用的信息,包含了显示信息,大小,维度,字体等;顺便说下,DisplayMetrics对 象里的widthPixel及heightPixels字段为整数类型,在以下的程序中,并没有对字符串类型做转换,所以strOpt为字符串?
程序代码:?
package com.allove;?
import android.app.Activity;?
import android.os.Bundle;?
import android.util.DisplayMetrics;?
import android.widget.TextView;?
public class Test extends Activity {?
/** Called when the activity is first created. */?
@Override?
public void onCreate(Bundle savedInstanceState) {?
super.onCreate(savedInstanceState);?
setContentView(R.layout.main);?
TextView myTextView=(TextView) this.findViewById(R.id.TextView01);?
DisplayMetrics dm=new DisplayMetrics();?
this.getWindowManager().getDefaultDisplay().getMetrics(dm);?
String strOpt="手机屏幕分辨率为:"+dm.widthPixels+"x"+dm.heightPixels;?
myTextView.setText(strOpt);?
}?
}
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。?
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;?
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize,根据 google 的建议,TextView 的字号最好使用 sp 做单位,
与分辨率无关的度量单位可以解决这一问题,Android支持下列所有单位:
px(像素):屏幕上的点。?
in(英寸):长度单位。?
mm(毫米):长度单位。?
pt(磅):1/72英寸。?
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。?
dip:与dp相同,多用于android/ophone示例中。?
sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
详细解决方案
Android获取银幕分辨率及DisplayMetrics简介
热度:100 发布时间:2016-05-01 16:46:00.0
相关解决方案
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- c#c++,android,ios(iphone),php,java视屏课程 散分
- android Post文件到ASP.NET的有关问题,能收到参数收不到文件
- RIM 替 Android 开发者提供免费的 PlayBook!2月13日前
- android 动态设立控件高度
- Android test project 编译方法
- android -相机使用教程(1)解决方法