android应用开发之View的大小计量单位(px、dpi、dp、dip、sp)
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为字体的单位:
- <span style="font-family:Microsoft YaHei;font-size:18px;"><TextView
- android:text="@string/hello_world"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="28sp" />
- <TextView
- android:text="@string/hello_world"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="28dp" />
- </span>
在mdpi的设备下,系统的字体为小时,效果图如下:
两种方式的字体是一样大的。若在hdpi的设备上,当系统的字体为普通时,其效果与上图一样。
当我设置字体为超大时,效果如下:
可以看到使用dp的字体的大小没有改变,使用sp的字体明显变大了。
android应用开发之View的大小计量单位(px、dpi、dp、dip、sp)的更多相关文章
- Android中px, ppi, dpi, dp, dip, sp概念解析
Android中px, ppi, dpi, dp, dip, sp概念解析
- 浅谈Android样式开发之View Animation (视图动画)
引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...
- 【android】【转发】Android中PX、DP、SP的区别
转载 http://blog.csdn.net/donkor_/article/details/77680042 前言: 众所周知,Android厂商非常多,各种尺寸的android手机.平板层出不穷 ...
- Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...
- Android混合开发之WebView与Javascript交互
前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...
- Android混合开发之WebView使用总结
前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结. 混合开发相关博客: Android混合开发之WebView使用总结 Android混合开 ...
- Android安全开发之WebView中的地雷
Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...
- android软件开发之webView.addJavascriptInterface循环渐进【二】
本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...
- android软件开发之webView.addJavascriptInterface循环渐进【一】
本篇文章由:http://www.sollyu.com/android-software-development-webview-addjavascriptinterface-cycle-of-gra ...
随机推荐
- react入门(上)
1. ReactJS是什么? 1). Facebook开源的一个js库 2). 一个用于动态构建用户界面的js库2. React的特点 * Declarative(声明式编码) * Component ...
- NOIp2018心得
NOIp2018 身为一名只会PJ的蒟蒻 我带着试试的心态(为了省一次中考哈哈哈) 同时报了PJ和TG??! TGD1T1是一道洛谷原题 都是提高组签到题 铺设道路 本蒻好像A了 然而某些dalao们 ...
- centos7系统root无法通过su切换到某个普通用户
[root@test ~]# su webappsu: failed to execute /bin/bash: Resource temporarily unavailable [root@test ...
- phpstorm设置方法头信息备注
一.目标,如下图,希望在方法上增加如下头信息备注 二.设置live template: 三.增加方法头信息备注,如下所示: * created by ${USER} at ${DATE} ${TIME ...
- getComputedStyle与currentStyle获取元素当前的css样式
CSS的样式分为三类: 内嵌样式:是写在标签里面的,内嵌样式只对所在的标签有效内部样式:是写在HTML里面的,内部样式只对所在的网页有效外部样式表:如果很多网页需要用到同样的样式,将样式写在一个以.c ...
- js的弹性运动
弹性: 速度+=(目标点-当前值)/系数://系数大概可以选择6,7,8 速度*=摩擦系数://系数可以选择0.7,0.75,0.8 缓冲: 速度=(目标点-当前值)/系数: 速度取整:
- python中 “==”和"is"的区别
python中 "=="是相等性比较,比较的是两个对象中的值是否相等,而“is”是一致性比较,比较的是两个对象中的内存地址 a = [1, 2, 3] b = a 此时, a == ...
- python中join()函数讲解
本文简述的是string.join(words[, sep]),它的功能是把字符串或者列表,元组等的元素给连接起来,返回一个字符串,和split()函数与正好相反,看下面的代码理解. a=[" ...
- Java实现——Dom4j读写XML文件
1. dom4j概述 解析DOM4J是一个开源XML解析包,采用了Java集合框架并完全支持DOM,SAX和JAXP. 最大的特色是使用了大量的接口,主要接口都在org.dom4j里定义. 2. do ...
- 《C#高级编程》笔记系列第三弹
我们在开发WinForm时,经常会看到partial关键字,比如,我们新建一个Windows Form时,后台代码自动添加如下: 1 public partial class Form1 : Form ...