当前位置:首页 » 安卓系统 » androidsp与dp

androidsp与dp

发布时间: 2022-08-22 04:47:23

⑴ Android像素单位dp,sp,px,pt的区别和比较

dp = 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类似,但是可以根据用户的字体大小首选项进行缩放。

为了使用户界面能够在现在和将来的显示器类型上正常显示,建议大家始终使用sp作为文字大小的单位,将dip作为其他元素的单位。当然,也可以考虑使用矢量图形,而不是用位图

⑵ px,dp和sp,这些单位有什么区别

px:

即像素,1px代表屏幕上一个物理的像素点;

px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guide,下同)。

偶尔用到px的情况,是需要画1像素表格线或阴影线的时候,用其他单位如dp会显得模糊。

dp:

这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英
寸x2英寸,屏幕分辨率为240x320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或
320/2=160dpi(纵向),160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per
Inch的缩写,即每英寸像素数量。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。

不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480x320分辨率的也有800x480分辨率的,前者的像素密度就比较低。
Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系
数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示
为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不
多”,这就是使用dp作为单位的效果,见下图。

更新20140701:
是不是所有android手机的屏幕宽度用dp衡量都是固定值(例如320dp)呢?答案是否定的,如果写一个程序画宽度等于320dp的横线,在不同手
机上运行,会发现在有些手机上横线比手机屏幕短,有些则比屏幕长,在平板上与手机上相比差别则更加明显。

dip:

与dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。

sp:

与缩放无关的抽象像素(Scale-independent
Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时
1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字
体尺寸以后的效果——窗口大小不变,只有文字大小改变。

还有几个比较少用到的尺寸单位:

mm:

即毫米;

in:

即英寸,1英寸=2.54厘米(约);

pt:

1pt=1/72英寸=0.035厘米;
最佳实践,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize="16sp"、layout_width="60dp";

⑶ Android的px,dp和sp等单位的区别详解

px:

即像素,1px代表屏幕上一个物理的像素点;
px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同

dp:

这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度。假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240x320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per Inch的缩写,即每英寸像素数量。横向和纵向的这个值都是相同的,原因是大部分手机屏幕使用正方形的像素点。
不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480x320分辨率的也有800x480分辨率的,前者的像素密度就比较低。
Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。
例如界面上有一个长度为“100dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,这就是使用dp作为单位的效果。

dip:

与dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。
sp:
与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。
还有几个比较少用到的尺寸单位:
mm:
即毫米;
in:
即英寸,1英寸=2.54厘米(约);
pt:
1pt=1/72英寸=0.035厘米;
最佳实践,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize="16sp"、layout_width="60dp";偶尔需要使用px单位,例如需要在屏幕上画一条细的分隔线时:
<View layout_width="match_parent" layout_height="1px"/>

补充:
1. android.view.ViewGroup.LayoutParams.height及width这两个属性的单位为像素,但是为了兼容多种分辨率的手机,我们需要最好使用dp。
2. 根据手机的分辨率从dp的单位转成px
public static int dip2px(Context context, float dpValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dpValue*scale + 0.5f);
}
3.根据手机的分辨率从px转成dp
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue/scale + 0.5f);
}

⑷ 浅谈android 屏幕适配中 dp和sp的区别

追到Android源码,发现系统内部用applyDimension()将所有单位都转换成px 再处理:
public static float applyDimension(int unit, float value, DisplayMetrics metrics)
{
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}

⑸ Android中dip,dp,sp,pt和px的区别详解

过去,程序员通常以像素为单位设计计算机用户界面。例如:图片大小为80×32像素。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。由此我们采用与分辨率无关的度量单位来开发程序就能够解决这个问题。Android应用开发支持不同的度量单位。
度量单位含义
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
dp: dip是一样的
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
in(英寸):长度单位。
mm(毫米):长度单位。
度量单位的换算公式
在android源码包TypedValue.java中,我们看如下函数:
代码如下:
public static float applyDimension(int unit, float value,
DisplayMetrics metrics)
{
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}
该函数功能:是把各单位换算为像素。
metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;
metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;
metrics.xdpi:默认值为DENSITY_DEVICE;
DENSITY_DEVICE:为屏幕密度
DENSITY_DEFAULT:默认值为160
屏幕密度:表示每英寸有多少个显示点,与分辨率是两个不同的概念。
据px = dip * density / 160,则当屏幕密度为160时,px = dip
根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知Android默认使用sp作为字号单位。将dip作为其他元素的单位。

⑹ Android编程中,sp和px和dp有什么区别啊,或者说给代表什么

sp: 一般用来设置字体的大小。设置sp时,如果设置系统的字体为大、小等,应用程序的字体也会跟随系统变化。

px: 是绝对像素点。设置大小时5px就是五个像素点的长度。

dp: device independent pixels(设备独立像素),一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

⑺ Android中dip,dp,sp,pt和px的区别

dp:
这个是最常用但也最难理解的尺寸单位。它与“像素密度”密切相关。
不同的手机/平板可能具有不同的像素密度,例如同为4寸手机,有480x320分辨率的也有800x480分辨率的,前者的像素密度就比较低。
dip:
与dp完全相同,只是名字不同而已。
在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。
sp:
与缩放无关的抽象像素(Scale-independent Pixel),只用于表示字体大小时使用。
sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。
pt:
即point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,Android中没见到哪里用过。
px:
即像素(Pixel),1px代表屏幕上一个物理的像素点。
另外还有一个:
dpi:
是dot per inch的缩写,就是每英寸的像素数,也叫做屏幕密度。
这个值越大,屏幕就越清晰。

慕课上有关于这个的详细视频讲解,你可以去看看
http://www.imooc.com/video/9349

⑻ android dp和sp的区别

1. dip: device independent pixels( 设备独立像素 ). 不同设备有不同的显示效果 , 这个和设备 硬件有关, 一般我们为了支持 WVGA 、 HVGA 和 QVGA 推荐使用这 这个, 不依赖像素。 这里要特别注意 dip 与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正 确,有可能导致 dip 不能正常显示。在屏幕密度为 160 的显示屏上, 1dip=1px ,有时候可能 你的屏幕分辨率很大如 480*800 ,但是屏幕密度没有正确设置比如说还是 160 ,那么这个时 候凡是使用 dip 的都会显示异常,基本都是显示过小。 dip 的换算: dip ( value ) =(int) (px ( value ) /1.5 + 0.5) 2. dp: 很简单,和 dip 是一样的。 3. px: pixels( 像素 ) ,不同的设备不同的显示屏显示效果是相同的,这是绝对像素,是多少就 永远是多少不会改变。 4. sp: scaled pixels( 放大像素 ). 主要用于字体显示 best for textsize 。 备注 : 根据 google 的推荐,像素统一使用 dip ,字体统一使用 sp 举个例子区别 px 和 dip : px 就是像素,如果用 px, 就会用实际像素画,比个如吧,用画一条长度为 240px 的横线,在 480 宽的模拟器上看就是一半的屏宽,而在 320 宽的模拟器上看就是 2 / 3 的屏宽了。 而 dip ,就是把屏幕的高分成 480 分,宽分成 320 分。比如你做一条 160dip 的横线,无论你 在 320 还 480 的模拟器上,都是一半屏的长度。

⑼ android UI中的单位sp与dp理解问题

dp也就是dip。这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp 或sp。
但如果设置字体,需要使用sp。
dp是与密度无关,sp除了与密度无关外,还与scale无关。如果屏幕密度为160,这时dp和sp和px是一样的。1dp=1sp=1px,但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。但如果设置成160dp或160sp的话。系统会自动将width属性值设置成320px的。也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
下面看一下其他单位的含义
px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。
in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128厘米。读者可以去量一量自己的手机屏幕,看和实际的尺寸是否一致。
mm:表示毫米,是屏幕的物理尺寸。
pt:表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。

⑽ android安卓系统dp/sp/px换算表比率 ratexxxhdpi是多少

首先要明确两点,什么是dpi?什么是dp?
dpi
=
dots
per
inch(每个inch上有多少个点)
160dpi的屏幕,1dp
=
1px,也就意味着1dp
=
1/160
inch。
所以每个inch上的点数越多(点的密度越大),每个dp对应的px也就越大
dp/sp可以认为是相同的,不过sp通常用于设置字体大小,而dp用于尺寸。
dp/sp与px换算,是和设备的density相关的,dp
*
density
(密度)=
px。
float
density
=
Resources.getSystem().getDisplayMetrics().density;
所谓的xhdpi,其dpi并不是某一固定取值,只要在240~320dpi范围内的都认为是xhdpi(mdpi/hdpi/xhdpi/xxhdpi类似)。
所以同样是xhdpi的手机,dp和px的转换也是不同的。

热点内容
ngram算法 发布:2025-01-24 04:03:16 浏览:658
迷宫游戏c语言 发布:2025-01-24 03:59:09 浏览:357
荣耀30pro存储类型 发布:2025-01-24 03:54:02 浏览:556
客户端文件上传 发布:2025-01-24 03:48:44 浏览:257
推特更改密码的用户名是什么 发布:2025-01-24 03:45:55 浏览:596
cc编译选项 发布:2025-01-24 03:45:18 浏览:511
银行密码怎么被锁 发布:2025-01-24 03:37:02 浏览:431
sql数据备份与恢复 发布:2025-01-24 03:35:36 浏览:228
dwordc语言 发布:2025-01-24 03:35:26 浏览:98
电脑配置管理器打不开怎么办 发布:2025-01-24 03:33:55 浏览:554