31.Android之常用单位px、dip、sp学习

一、  概述

我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作长度的单位而懊恼。

在Android中支持的描述大小区域的类型有以下几种。

px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp。

sp(scaled pixels—best for text size)——带比例的像素

pt(points)——磅:1pt = 1/72英寸

in(inches)——英寸

mm(millimeters)——毫米

二、  详解

sp由于是放大像素,主要是用于字体显示,由此根据google的建议,TextView的字体大小最好用sp做单位,而且查看TextView的源码可知Android默认使用水平作字号单位。

在Android中最常用到的还是pxdip。但是这两个之间到底有什么区别呢?

在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标签的资源。 
不加任何标签的资源是各种分辨率情况下共用的。

**************************************************************************************************

引用 Android上dip、dp、px、sp等单位说明

本文引用自shixin20051108《Android上dip、dp、px、sp等单位说明》

dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。 
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; 
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。 
========================= 
关于换算(以 sp 和 pt 例) 
查看 TextView 等类的源码,可知: 
case COMPLEX_UNIT_PX
return value; 
case COMPLEX_UNIT_SP: 
return value * metrics.scaledDensity; 
case COMPLEX_UNIT_PT: 
return value * metrics.xdpi * (1.0f/72); 
-------------------------- 
scaledDensity = DENSITY_DEVICE / (float) DENSITY_DEFAULT; 
xdpi = DENSITY_DEVICE; 
-------------------------- 
DENSITY_DEFAULT = DENSITY_MEDIUM = 160; 
============================================ 
所以: 假设 pt 和 sp 取相同的值 1,则可设 1pt 和 1sp 之间系数 x, 
1 * DENSITY_DEVICE / 72 = x * 1 * DENSITY_DEVICE / 160 => 
x = 160 / 72 = 2.2222 
也就是说在 Android 中, 1pt 大概等于 2.22sp 
=================================================================== 
什么是Dip和Sp 
过去,程序员通常以像素单位设计计算机用户界面。例如,定义一个宽度300像素的表单字段,列之间的间距5个像素,图标大小16×16像素等。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。 
与分辨率无关的度量单位可以解决这一问题。Android支持下列所有单位。 
px像素):屏幕上的点。 
in(英寸):长度单位。 
mm(毫米):长度单位。 
pt(磅):1/72英寸。 
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。 
dip:与dp相同,多用于android/ophone示例中。 
sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。 
了使用户界面能够在现在和将来的显示器类型上正常显示,建议大家始终使用sp作文字大小的单位,将dip其他元素的单位。当然,也可以考虑使用矢量图形,而不是用位图

********************************************************************* 
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。 
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用; 
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。由此,根据 google 的建议,TextView 的 
字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作字号单位。 
在 Android 中,  1pt 大概等于 2.22sp以上供参考,如果 UI 能够以 sp 单位提供设计是最好的,如果设计中没有 sp的概念,则开发人员也可以通过适当的换算取近似值。 
过去,程序员通常以像素单位设计计算机用户界面。例如,定义一个宽度300像素的表单字段,列之间的间距5个像素,图标大小16×16像素等。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。 
与分辨率无关的度量单位可以解决这一问题。Android支持下列所有单位。 
px像素):屏幕上的点。 
in(英寸):长度单位。 
mm(毫米):长度单位。 
pt(磅):1/72英寸。 
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。 
dip:与dp相同,多用于android/ophone示例中。 
sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。 
分辨率:整个屏是多少点,比如800x480,它是对于软件来说的显示单位,以px单位的点。 density(密度)值表示每英寸有多少个显示点,与分辨率是两个概念。apk的资源包中, 
当屏幕density=240时使用hdpi标签的资源 
当屏幕density=160时,使用mdpi标签的资源 
当屏幕density=120时,使用ldpi标签的资源。 
一般android设置长度和宽度多用dip,设置字体大小多用sp. 在屏幕密度160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.当屏幕密度240时,1dp=1dip=1.5px
了使用户界面能够在现在和将来的显示器类型上正常显示,建议大家始终使用sp作文字大小的单位,将dip其他元素的单位。当然,也可以考虑使用矢量图形,而不是用位图。

时间: 2024-07-30 11:59:11

31.Android之常用单位px、dip、sp学习的相关文章

Android px, dp, sp的区别

Android自兴起以来,开发者不断增加,与此同时市场上参差不齐的设备也不断增加,随之而来的则是开发者需要适配众多机型而带来的困扰与抱怨.并且随着不同厂家定制化不同的ROM,Android设备的碎片化现象日益严重.这篇文章主要讲述如何设计中严格遵从设计图标准的Android页面. 1. px, dp, sp区别 什么是px px就是我们通常所说的像素的单位,在css里面,我们用px比较多.px主要指用户在屏幕上看到的事物的实际大小单位. 什么是dp 在看手机或者电脑参数时,我们经常说到一个关键词

New UI-常用计量单位px,dp,sp,pt解析与转换

New UI-常用计量单位px,dp,sp,pt解析与转换            --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目

【Android笔记】像素单位px、dp、sp的区别与理解

px  即像素,1px代表屏幕上一个物理的像素点: px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guide,下同). 偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模糊. dp 这个是最常用但也最难理解的尺寸单位.它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度.假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算出

安卓的显示单位dp、dip、px、sp

dp==dip:设备独立像素 .(device independent pixels) dip是年迈的dp,已经退休,在比较老的代码中还可以看到dip.目前谷歌推荐用dp,在我们开发安卓程序的时候,除了字体之外,都推(强)荐(制)使用dp. sp:比例像素.(scaled pixels ) sp一般用于处理字体.安卓有个东西叫做大字体,那玩意就是专门调整sp的.所以所有关于字体的单位,推(强)荐(制)使用sp. px:像素(pixels) px即手机上面的物理点,属于物理范畴的,所以在写安卓程序

在Android中,px,dp,dip,sp的不同之处

       最近在学习Android开发,一直没有弄清楚px,dp,dip,sp的区别.今天正好有时间,就花时间研究了一下.     众所周知,Android厂商非常多,各种尺寸的Android手机.平板层出不穷.导致了Android生态环境的碎片化现象越来越严重.Google公司为了解决分辨率过多的问题,在Android的开发文档中定义了px,dp,dip,sp,方便开发者适配不同分辨率的Android设备. 1.基础知识:     mm:millimeters 毫米,长度单位.     i

android 长度单位 dp dip sp px pt

基本知识 QVGA 240*320像素 VGA 640*480像素 WVGA 800*480像素 HVGA 480*320像素 看到有很多人不太理解dp.sp和px的区别:现在这里介绍一下dp和sp. dp也就是dip.这个和sp基本类似. 如果设置表示长度.高度等属性时可以使用dp或sp.但如果设置字体,需要使用sp.dp是与密度无关,sp除了与密度无关外,还与scale无关.如果屏幕密度为160,这时dp和sp和px是一样的. 1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(

android 解释dp,px,pt,sp单位

1.dp(dip):不同设备有不同的显示效果,这个和设备硬件有关系,一般我们为了支持WVGA,HVGA和QVGA对剑使用这个,它是不依赖像素的 2.px:pixels(像素),不同设备显示效果相同,一般我们HVGA代表320×480像素,这个用的比较多 3.pt:point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用 4.sp:scaled pixels(放大像素),主要用于字体显示best for textsize 在apk的资源包中,当屏幕density=240时使

android中的长度单位,dip、dp、px、sp及获取屏幕分辨率和密度

本文主要讲的是android中长度单位(dp.px.sp)的用法. 1.px:pixels(像素) (1).不同的设备不同的显示屏显示效果是相同的 (2).这是绝对像素,是多少就永远是多少不会改变. 一般我们形容屏幕的分辨率,例如分辨率800*480,实际表示改手机屏幕在高度上有800个像素,宽度上有400个像素,整个屏幕就是由800*480个像素点组成.但是由于我们的屏幕大小是不一样的,就会导致同样分辨率在不同尺寸的屏幕上表现不同,同分辨率下,尺寸越小的屏幕上每英寸上分布的像素点就越多,即分辨

Android的计量单位px,in,mm,pt,dp,dip,sp

android中dip.dp.px.sp和屏幕密度 1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这    这个,不依赖像素. 这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示.在屏幕密度为160的显示屏 上,1dip=1px,有时候可能你的屏幕分辨率很大如480*800,但是屏幕密度没有正确设置