Android系统dimension单位详解
转载请注明出处,谢谢!http://www.cnblogs.com/coding-way/p/3457878.html
Android设备种类多样,要想适配好各种屏幕,理解各种屏幕数据是必须的。首先先从DisplayMetircs类聊起,DisplayMetircs类可以很方便的获取屏幕相关的信息,使用方法如下:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
下面解释下DisplayMetircs类里的属性:
| widthPixels、heightPixels | 这两个属性就是屏幕宽和高的绝对像素,比如:1280,800。 |
| xdpi、ydpi | dpi(density independent pixel)这两个属性是对应X轴和Y轴的,每英寸像素数,比如一个像素为240x320,大小为1.5"x2"的屏幕,其xdpi=240/1.5=160,ydpi=320/2=160。注意这个值不一定是整数。 |
| densityDpi | 这个值不是精确值,他只代表了屏幕dpi的基准,常用的取值为120、160、240、320等。这个属性对应/layout-ldpi、/layout-mdpi、/layout-hdpi等自动适配的布局文件。 |
| density | 真实dpi(对角线的像素/对角线的英寸)与基准dpi(160)的比值,比如:一个320x480,大小为1.5"x2"的屏幕,其density=240/160=1.5。这个值是给单位dip和单位px换算用的,dip=density*px,后面会详细说明。 |
| scaledDensity | 这个值与density一样, 但在运行中会根据用户设置的系统字体大小来动态调整。 |
了解了这些基础知识后,各种单位就好理解了:
| px (pixels,像素) | 顾名思义,实际的像素点数。像素的缺点很明显,Android设备的像素种类很多,如果一个控件的像素为320x320,那么在240x320的屏幕中显示将不完整,所以我们要为每一种屏幕像素配置一种大小,这显然不现实,所以google不推荐使用这个单位。 |
| pt (point,磅) | 1pt=1/72英寸,一般用作字体单位,这个同px,都是无法动态调整的单位,不推荐。 |
| dip (Density Independent Pixel,密度无关像素,也可写dp) | 为了解决多种像素适配的问题,android引入了dip单位,这个单位的换算公式为:dip/pixels=屏幕dpi/160,而density=屏幕dpi/160,所以dip = density*pixels,也就是说,如果屏幕为240x320,1.5"x2"尺寸,则其dpi为160,density=1,那么一个dip相当与一个px;如果屏幕像素增加到480x800,尺寸不变,那么其dpi为320,density=2,则一个dip相当与两个px,这样就达到了缩放的目的。 |
| sp (scaled pixels,缩放像素) | 类似dip,同样是动态调整的,不过是依据屏幕密度density和用户设置的系统字体大小来调整的,所以sp使用于设置字体的大小。 |
| mm (millimeters,毫米) | 普通长度单位,基于屏幕的实际尺寸。 |
| in (inches,英寸) | 普通长度单位,基于屏幕的实际尺寸。 |
Android系统dimension单位详解的更多相关文章
- [置顶] Android系统五大布局详解Layout
我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的.组件就是我们常见的Button.TextEdit等 ...
- Android系统五大布局详解Layout
我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前, 视图都是由一个一个的组件构成的.组件就是我们常见的Button.TextEdit ...
- Android 系统属性-SystemProperties详解***
创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是androi ...
- Android屏幕适配问题详解
上篇-Android本地化资源目录详解 :http://www.cnblogs.com/steffen/p/3833048.html 单位: px(像素):屏幕上的点. in(英寸):长度单位. mm ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- Android开发之InstanceState详解
Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- Android中mesure过程详解
我们在编写layout的xml文件时会碰到layout_width和layout_height两个属性,对于这两个属性我们有三种选择:赋值成具体的数值,match_parent或者wrap_conte ...
- Android中Intent组件详解
Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...
随机推荐
- 各大公司Java面试题超详细总结
ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副 ...
- unity, WaterProDaytime注意事项。
一,多个WaterProDaytime不要公用material. 原因是:水面material的shader(FXWaterPro.shader)引用了reflectionTexture,而水面1的r ...
- consul在windows下的安装
consul的下载 https://www.consul.io/downloads.html 选择对应的系统版本 修改环境变量path 启动命令窗口 执行命令 consul agent -dev 打开 ...
- QT 随机数生成
下面总结了QT中随机生成的方法(仅供学习参考),分为旧方法和新方法,一般来说,旧的方法已经被抛弃,在开发新的应用中推荐使用新方法. C++ Code 12345678910111213141516 ...
- SpEL、PropertyPlaceholderConfigurer与@Value、#{}、${}
概念 SpEL:Spring EL表达式 PropertyPlaceholderConfigurer:即org.springframework.beans.factory.config.Propert ...
- UpLoader------实现上传大文件
代码: <div id="selectFile">选择文件1</div> <script> var da = newGuid(); var kk ...
- Redis存读取数据
这一节演示下载.NET中怎样使用Redis存储数据.在.net中比较常用的客户端类库是ServiceStack,看下通过servicestack怎样存储数据. DLL下载:https://github ...
- SpringBoot(五)-- 整合Spring的拦截器
一.步骤 1.创建我们自己的拦截器类并实现 HandlerInterceptor 接口. 2.创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptor ...
- Splash 简介与安装
Splash 说白了就是一个轻量级的浏览器,利用它,我们同样可以实现跟其他浏览器一样的操作,我们使用 Docker 来安装 Splash: [root@localhost ~]# docker run ...
- 【前端积累】javascript事件
什么是事件? 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信.就是文档或浏览器窗口发生的一些特定的交互瞬间(某种动作). 1.事件流 事件流描述的是从页面中接收事件的顺序. 1)事件 ...