http://blog.csdn.net/ljianhui/article/details/43601495?ref=myread

一、像素(px)与屏幕分辨率

1)px(Pixels ,像素):对应屏幕上的实际像素点。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。

2)屏幕分辨率就是在屏幕上显示的物理像素总和,它等于屏幕的宽度上的像素*高度上的像素。在Android应用程序的开发上,不会使用屏幕分辨率。

3)屏幕分辨率虽然是宽*高,但是它与屏幕的大小没有关系,它与一个屏幕的像素的数量相关。

二、dpi

1)dpi:像素每英寸,是屏幕像素(px)密度的单位。像素密度就是屏幕指定物理宽高范围内能显示的像素的数量。

2)在android中,dpi有如下分类,ldpi,mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi

3)在现实中,通常以mdpi为一个基准,它表示160dpi,并将此密度定义为1个密度的单位。160dpi表示在1平方英寸的面积内有160*160个像素点。ldpi则为120dpi,hdpi则为240dpi,xhdpi则为320dpi,xxhdpi则为480dpi,xxxhdpi则为640dpi,也就是说ldpi的密度为0.75,hdpi的密度为为1.5,xhdpi则为2,xxdpi则为3,xxxhdpi则为4。

4)dpi跟屏幕的大小无关,它只是像素密度的一个量度。

三、dp

独立于物理密度的量度单位,它以160dpi为基准,无论在哪种dpi的屏幕下,1dp表示的物理长度都是一样的。在160dpi的屏幕下,1dp=1px,即一个dp需要用一个px来表示,在240dpi的屏幕下,1dp=1.5px,表示一个dp需要1.5个px来表示。也就是说1dp=dpi/160*px。它的意义在于可以让开发人员开发出无论在哪种dpi的屏蔽下显示大小都相同的UI。也就是说在相同尺寸、但不同的分辨率的手机上,用dp标识的东西,显示的大小是一样的。

四、dip

与dp相同,只是名字不一样。

五、sp

scaled pixels放大像素的缩写,专门用于处理字体的大小。它不仅与屏幕dpi有关,还与系统的默认字体大小有关。对于同一sp值,屏幕dpi越高,所显示的字体越小;系统字体越大,所显示的字体也越大。这就是我们设置系统字体大小后,所有使用sp为单位的字体都改变了的原因。

若字体以dp为单位,则修改系统字体大小,界面的View的字体大小不会改变。

例如:对于以下的代码,两个TextView在一个垂直分布的LinearLayout中,第一个TextView使用sp为字体的单位,第二个TextView使用dp为字体的单位:

  1. <span style="font-family:Microsoft YaHei;font-size:18px;"><TextView
  2. android:text="@string/hello_world"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:textSize="28sp" />
  6. <TextView
  7. android:text="@string/hello_world"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:textSize="28dp" />
  11. </span>

在mdpi的设备下,系统的字体为小时,效果图如下:

两种方式的字体是一样大的。若在hdpi的设备上,当系统的字体为普通时,其效果与上图一样。

当我设置字体为超大时,效果如下:

可以看到使用dp的字体的大小没有改变,使用sp的字体明显变大了。

android应用开发之View的大小计量单位(px、dpi、dp、dip、sp)的更多相关文章

  1. Android中px, ppi, dpi, dp, dip, sp概念解析

    Android中px, ppi, dpi, dp, dip, sp概念解析

  2. 浅谈Android样式开发之View Animation (视图动画)

    引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...

  3. 【android】【转发】Android中PX、DP、SP的区别

    转载 http://blog.csdn.net/donkor_/article/details/77680042 前言: 众所周知,Android厂商非常多,各种尺寸的android手机.平板层出不穷 ...

  4. Android混合开发之WebViewJavascriptBridge实现JS与java安全交互

    前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...

  5. Android混合开发之WebView与Javascript交互

    前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...

  6. Android混合开发之WebView使用总结

    前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结. 混合开发相关博客: Android混合开发之WebView使用总结 Android混合开 ...

  7. Android安全开发之WebView中的地雷

    Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...

  8. android软件开发之webView.addJavascriptInterface循环渐进【二】

    本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...

  9. android软件开发之webView.addJavascriptInterface循环渐进【一】

    本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...

随机推荐

  1. 设置section的距离

    在ios7中使用group类型的tableview时,第一个section距离navigationbar的距离很大,不符合这边的设计图.使用 myTableView . sectionHeaderHe ...

  2. js的命令模式

    命令模式: 什么叫命令模式: 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. 命令模式主要有四个部分: 命令对象(comma ...

  3. 高度自适应的bug

    今天在整理之前IFEde作业,发现有个简历的效果好像没实现.于是想把样式改成作业要求的那样. 作业要求是这样的: 右边栏昨晚高度是839px,我想把左边栏做成高度自适应的.但是没成功.现在我把这个问题 ...

  4. Linux菜鸟起飞之路【二】Linux基本常识

    一.Unix操作系统基本常识 1.什么是Unix? Unix是一个计算机操作系统,是一个用来协调.管理和控制计算机硬件与软件资源的控制程序. 2.Unix操作系统的特点? 多用户与多任务.多用户表示在 ...

  5. 如何利用 CSS 动画原理,在页面上表现日蚀现象

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OELvrK 可交互视频教 ...

  6. 四、10分钟ToPandas_0.24.2

    # Author:Zhang Yuan整理,版本Pandas0.24.2 # 0. 习惯上,我们会按下面格式引入所需要的包: import pandas as pd import numpy as n ...

  7. SGU 149 树形DP Computer Network

    这道题搜了一晚上的题解,外加自己想了半个早上,终于想得很透彻了.于是打算好好写一写这题题解,而且这种做法比网上大多数题解要简单而且代码也比较简洁. 首先要把题读懂,把输入读懂,这实际上是一颗有向树.第 ...

  8. 深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记2)

    第5章  Buffer Cache与Shared Pool原理 5.1 Buffer Cache原理 Buffer Cache是Oracle SGA中的一个重要部分,通常的数据访问和修改都需要通过Bu ...

  9. STM32F407 SPI 个人笔记

    概述 SPI ,Serial Peripheral interface,串行外围设备接口 全双工,同步的通信总线,四根线 主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器 ...

  10. TOJ 4815: 关押罪犯

    4815: 关押罪犯 Time Limit(Common/Java):10004MS/12000MS     Memory Limit:65536KByte Total Submit: 2       ...