Android的单位以及屏幕分辨率详解

2016-02-19 09:01 9 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐Android的单位以及屏幕分辨率详解,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

一、常用的单位:相对单位主要有:px、sp、dp
绝对单位主要有:pt、in、mm

二、单位应用总结:一般用相对单位,而不是绝对单位
1、字体的大小一般使用SP,用此单位的字体能够根据用户设置字体的大小而自动缩放

2、空间等相对距离一般使用dp(dip),随着密度变化,对应的像素数量也变化,但并没有直接的相对比例的变化。

3、px与实际像素有关,及与密度有关!dp和sp和实际像素没有关系,对于一定分辨率但不同密度的屏幕,px单位的应用可能会导致长度的相对比例的变化。

三、密度与分辨率:
密度值表示每英寸有多少个显示点,与分辨率是两个概念。

其屏幕密度标准是:HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

具体的应用运算关系:假设分辨率是 x*y, 密度为 d, 屏幕实际大小为 a*b那么关系为 x*y = d * a * b (约等于)

不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例density=120时 屏幕实际分辨率为240px*400px (两个点对应一个分辨率)

四、对比总结:
1、在相同密度(即同一实体屏幕)不同分辨率的情况下,与实体密度无关的相对单位sp和dp显示正常

2、在相同分辨率不同密度的情况下,因为一般情况下,都用的标准密度,所以分析的意义不是很大

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

其他资料:
px:是屏幕的像素点
in:英寸
mm:毫米
pt:磅,1/72 英寸
dp:一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
dip:等同于dp
sp:同dp相似,但还会根据用户的字体大小偏好来缩放。
建议使用sp作为文本的单位,其它用dip
针对dip和px 的关系,做以下概述:
HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
density值表示每英寸有多少个显示点,与分辨率是两个概念。
不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例

density=120时 屏幕实际分辨率为240px*400px (两个点对应一个分辨率)
状态栏和标题栏高各19px或者25dip
横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip
竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip

density=160时 屏幕实际分辨率为320px*533px (3个点对应两个分辨率)
状态栏和标题栏高个25px或者25dip
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip

density=240时 屏幕实际分辨率为480px*800px (一个点对于一个分辨率)
状态栏和标题栏高个38px或者25dip
横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip
竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip

apk的资源包中,当屏幕density=240时使用hdpi 标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px

下面是几种不同单位的相互转换.
代码如下:

public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResource().getDisplayMetrics().density;
return (int)(pxValue / scale + 0.5f);
}
public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResource().getDisplayMetrics().density;
return (int)(pxValue / scale + 0.5f);
}

下面说下如何获取分辨率:

在一个Activity的onCreate方法中,写入如下代码:
代码如下:

DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;  // 屏幕宽度(像素)
int height = metric.heightPixels;  // 屏幕高度(像素)
float density = metric.density;  // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)

这还是挺简单的, 可是你有没有在800*480的机器上试过, 是不是得到的宽度是533 ? 因为android刚开始时默认的density是1.0 , 此时你可以再manifest.xml中加入

1.uses-sdk节点, uses-sdk android:minSdkVersion="4" / , 表示不sdk1.6以下的机器不能安装你的apk了.

2.supports-screens 节点.
代码如下:

supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true" /

来源:http://www.tulaoshi.com/n/20160219/1589227.html

延伸阅读
标签: Android
安卓手机屏幕分辨率如何修改   手机必须获得ROOT权限,接着你需要确定手机的显示density和分辨率,desity的意思就是密度,在安卓系统中,desity是一个非常重要的显示参数。如果density设置不当,比如density设置过高,可能会使字体和其他一些UI显示得很小,而如果高分屏设置density过低,也可能会使字体和其他UI显得过大,甚至影响App...
标签: 电脑入门
说在前面:分辨率又称解析度,一般理解为屏幕显示像素的多少,以1024*768为例,这个分辨率表达的意思是,屏幕将有横向1024行竖向768行点阵组成,我们看到的各种文字、图片、窗口等都是有这些一个个的点阵组成。一般认为,屏幕分辨率越高图像的精细度越高,但是,并不是每一个显示屏都能支持无限的高,相反,过高的分辨率设置会使文字和图像变小...
标签: windows系统
Win8修改屏幕分辨率的方法   一般情况下电脑安装系统后会自动设置分辨率,但是有些时候我们运行软件或误操作会造成系统分辨率而有所改变,这个时候我们就需要调整分辨率还适应电脑屏幕,尤其是在win8系统下,对于分辨率的要求非常高,因为有些程序需要在特定的分辨率下运行,那么当遇到win8分辨率出现问题的时候应该如何修改分辨率呢?...
所以,记录下核心代码: 代码如下: DisplayMetrics metrics=new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 获取到本机的分辨率: 代码如下: int widthPixels=metrics.widthPixels; int heightPixels=metrics.heightPixels; 当然,可以直接用TextView显示出来,还可以直接去运用!
标签: 电脑入门
在大多数笔记本电脑的配置表格中有关分辩率一栏中,大家经常看到的都是类似XGA、SXGA+的描述方式,下面我们简单来解释一下这些术语的全称,以及他们所对应的分辩率。 分辨率术语 分辨率(像素) 屏幕高宽比 (宽/高) 类型 VGA 640 x 480 1.33x标准 SVGA 800 x 600 1.33x标准 XGA 1024 x 768 1.33x标准 1152 x 768 1.50x 宽屏 WXGA ...

经验教程

696

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部