Android屏幕density, dip等相关概念总结
1、几个术语
VGA、HVGA、QVGA、WVGA、WQVGA
这些术语都是指屏幕的分辨率。
VGA:Video Graphics Array。即:显示画图矩阵。相当于640×480 像素;
HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320;
QVGA:Quarter VGA;即:VGA的四分之中的一个,分辨率为320×240;
WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素;
WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低。通常是:400×240。480×272。
下面列出了常见的分辨率类型。
QVGA = 320 * 240; WQVGA = 320 * 480; WQVGA2 = 400 * 240; WQVGA3 = 432 * 240; HVGA = 480 * 320; VGA = 640 * 480; WVGA = 800 * 480; WVGA2 = 768 * 480; FWVGA = 854 * 480; DVGA = 960 * 640; PAL = 576 * 520; NTSC = 486 * 440; SVGA = 800 * 600; WSVGA = 1024 * 576;
XGA = 1024 * 768; XGAPLUS = 1152 * 864; HD720 = 1280 * 720; WXGA = 1280 * 768; WXGA2 = 1280 * 800; WXGA3 = 1280 * 854; SXGA = 1280 * 1024; WXGA4 = 1366 * 768; SXGAMINUS = 1280 * 960; SXGAPLUS = 1400 * 1050; WXGAPLUS = 1440 * 900; HD900 = 1600 * 900; WSXGA
= 1600 * 1024; WSXGAPLUS = 1680 * 1050; UXGA = 1600 * 1200; HD1080 = 1920 * 1080; QWXGA = 2048 * 1152; WUXGA = 1920 * 1200; TXGA = 1920 * 1400; QXGA = 2048 * 1536; WQHD = 2560 * 1440; WQXGA = 2560 * 1600; QSXGA = 2560 * 2048; QSXGAPLUS = 2800 * 2100; WQSXGA
= 3200 * 2048; QUXGA = 3200 * 2400; QFHD = 3840 * 2160; WQUXGA = 3840 * 2400; HD4K = 4096 * 2304; HXGA = 4096 * 3072; WHXGA = 5120 * 3200; HSXGA = 5120 * 4096; WHSXGA = 6400 * 4096; HUXGA = 6400 * 4800; SHV = 7680 * 4320; WHUXGA = 7680 * 4800;
px:(pixels)(像素):屏幕上的点,表示屏幕实际的象素,与密度相关。密度大了,单位面积上的px会比較多。比如。320*480的屏幕在横向有320个象素,在纵向有480个象素。
dip或dp(与密度无关的像素)。
这个和设备硬件有关。为了支持WVGA、HVGA和QVGA 5进制空间推荐使用这个。
一种基于屏幕密度的抽象单位。设置一些view的宽高能够用这个,普通情况下。在不同分辨率。都不会有缩放的感觉。
px与dip的换算公式:
px = (density/160)*dip density一般为3个经常使用固定值240/160/120
scaledDensity (字体缩放比例)。即 单位 sp 的 换算值。 一般用在设定字体大小中
sp放大像素– 主要处理字体的大小。dp是与密度无关,sp除了与密度无关外,还与scale无关。
sp与px的换算公式:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
pixelSize = (int)scaledPixelSize * dm.scaledDensity;
in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。比如,形容手机屏幕大小,常常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。
假设手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128厘米
pt:表示一个点。是屏幕的一个物理长度,大小为1英寸的1/72。
密度Density:依据像素分辨率。在屏幕指定物理宽高范围内能显示的像素数量,一般为一英寸能显示的像素。
2、一些參数
常见手机屏幕分辩率(希望大家能够补充)
小米3
density=3.0, width=1080, height=1920, scaledDensity=3.0, xdpi=449.704, ydpi=447.412
小米2
density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=345.0566, ydpi=342.23157
魅族3
density=2.5, width=1080, height=1800, scaledDensity=2.5, xdpi=415.636, ydpi=415.636
三星s3
density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=304.8, ydpi=306.716
Motorola Me525 Android2.2.2
density=1.5, width=480, height=854, scaledDensity=1.5, xdpi=144.0, ydpi=144.0
屏幕大小和密度对比表
屏幕 宽度 高度 尺寸 大小 密度
Type (Pixels) (Pixels) Range (inches) Size Group
QVGA 240 320 2.6 - 3.0 Small Low
WQVGA 240 400 3.2 - 3.5 Normal Low
FWQVGA 240 432 3.5 - 3.8 Normal Low
HVGA 320 480 3.0 - 3.5 Normal Medium
WVGA 480 800 3.3 - 4.0 Normal High
FWVGA 480 854 3.5 - 4.0 Normal High
WVGA 480 800 4.8 - 5.5 Large Medium
FWVGA 480 854 5.0 - 5.8 Large Medium
3、一些实用的代码
mport android.content.Context;
import android.util.DisplayMetrics; /**
* 计算公式 pixels = dips * (density / 160)
*
* @version 1.0.1 2010-12-11
*
* @author
*/
public class DensityUtil { private static final String TAG = DensityUtil.class.getSimpleName(); // 当前屏幕的densityDpi
private static float dmDensityDpi = 0.0f;
private static DisplayMetrics dm;
private static float scale = 0.0f; /**
*
* 依据构造函数获得当前手机的屏幕系数
*
* */
public DensityUtil(Context context) {
// 获取当前屏幕
dm = new DisplayMetrics();
dm = context.getApplicationContext().getResources().getDisplayMetrics();
// 设置DensityDpi
setDmDensityDpi(dm.densityDpi);
// 密度因子
scale = getDmDensityDpi() / 160;
Logger.i(TAG, toString());
} /**
* 当前屏幕的density因子
*
* @param DmDensity
* @retrun DmDensity Getter
* */
public static float getDmDensityDpi() {
return dmDensityDpi;
} /**
* 当前屏幕的density因子
*
* @param DmDensity
* @retrun DmDensity Setter
* */
public static void setDmDensityDpi(float dmDensityDpi) {
DensityUtil.dmDensityDpi = dmDensityDpi;
} /**
* 密度转换像素
* */
public static int dip2px(float dipValue) { return (int) (dipValue * scale + 0.5f); } /**
* 像素转换密度
* */
public int px2dip(float pxValue) {
return (int) (pxValue / scale + 0.5f);
} @Override
public String toString() {
return " dmDensityDpi:" + dmDensityDpi;
}
}
Android屏幕density, dip等相关概念总结的更多相关文章
- Android屏幕相关概念和适配方法
参考文档: 1.http://blog.csdn.net/carson_ho/article/details/51234308(略有修改) 2.http://www.cnblogs.com/cheng ...
- Android屏幕密度(Density)和分辨率概念详解
移动设备有大有小,那么如何适应不同屏幕呢,这给我们编程人员造成了很多困惑.我也是突然想到这些问题,然后去网上搜搜相关东西,整理如下. 首先,对下面这些长度单位必须了解. Android中的长度单位 ...
- 一、Android屏幕的计量单位
px :是屏幕的像素点in :英寸mm:毫米pt :磅,1/72英寸dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip :等同于dpsp :同dp ...
- Android中关于dip和px以及转换的总结
我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼.在Android中支持的描述大小区域的类型有以下几种: px(pixels)——像素:不同的设备显示效果相同,一般我 ...
- 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)
来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Android屏幕适配全攻略(最权威的官方适配指导) (转)
招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...
- 【转】Android屏幕适配全攻略(最权威的官方适配指导)
原文网址:http://blog.csdn.net/jdsjlzx/article/details/45891551 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的 ...
- Android屏幕适配全攻略(最权威的官方适配指导)
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入 ...
随机推荐
- C#版查杀本地/远程进程工具
xkill [原创] Author: R&S E-mail: yrwithsh@vip.sina.com HomePage: fz5fz.yeah.net Date: 10/04/2003 u ...
- RUP---统一软件开发过程
更详细的见:http://www.ibm.com/developerworks/cn/rational/r-rupbp/ 本文引用:http://baike.baidu.com/view/223583 ...
- Terminix:基于 GTK3 的平铺式 Linux 终端模拟器
现在,你可以很容易的找到大量的 Linux 终端模拟器,每一个都可以给用户留下深刻的印象.但是,很多时候,我们会很难根据我们的喜好来找到一款心仪的日常使用的终端模拟器.这篇文章中,我们将会推荐一款叫做 ...
- [Node.js] Child Process with fork() to handle heavy calculation process
When build server, if we have a API endpoint requires some heavy calculation process, it will block ...
- 在简化版Fedora8上安装jdk-7u25-linux-i586.rpm的过程
台式机的操作系统重新换回了Fedora8,遵从一些大牛的建议,把很多附件去了,尽量让系统保持最简化.这样能熟悉每个软件的安装配置过程,也能减少版本间的冲突. 进入控制台后,查查有没有Java存在系统中 ...
- python input 与raw_input函数的区别
转自:http://blog.csdn.net/sruru/article/details/7790436 以前没有深入考虑过raw_input与input函数的区别,所以一直比较困惑,今天测试之后, ...
- 谈一谈chrome浏览器使用
F3或Ctrl+F5: 查找本网页里面的内容,匹配到即可高亮. F6:回到地址栏 Ctrl+J:显示下载内容 Ctrl+N: 新建一个标签页 F10:选项 F11:显示全屏 F12:调试网页 大家有什 ...
- 算法笔记_169:历届试题 兰顿蚂蚁(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只“蚂 ...
- Windows删除无效服务
W+R运行:regedit http://os.51cto.com/art/201208/354989.htm
- ubuntu下的fdisk用法
Linux下的fdisk功能是极其强大的,用它可以划分出最复杂的分区,下面简要介绍一下它的用法: 对 于IDE硬盘,每块盘有一个设备名:对应于主板的四个IDE接口,设备名依次为:/dev/hda,/d ...