189 8069 5689

关于spandroid的信息

Android中常见的单位ppi,dp,dpi,sp,px

在android 开发过程中,我们使用的单位比较少,一般情况下在描述字体大小的时候我们通常用sp,而在设置间距的时候我们用dp,除此之外很少再用到其他单位,而且很多时候我们用着用着就习惯了,也不去探究为什么这么写,可不可以用其他单位,每个单位到底代表着什么意思,所以说,习惯真的很可怕呀。今天,我们就来一探究竟,看看这些单位背后的含义。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了瑞金免费建站欢迎大家使用!

像素即是屏幕上显示数据的最基本的点,在PS里面也是其最根本的单位,所有的图形都是在此基础上生成的,平时我们经常讲的手机屏幕分辨率就是以像素作为单位的,比如在android中我们经常说的手机像素是1080X1920,其实它所表达的意思是在该手机上面在横向上面有1080个像素点,在纵向上有1920个像素点。

在android中用来形式字体大小的单位,正常情况下会按照手机系统设置的文本大小来显示文字,但是同时也会与系统设置的文本保持一致,比如在有些老年机上面为了更好的操作手机有些人会将字体设置为较大字体,这个时候使用sp作为单位的字体也会随之变大,但是如果将字体大小的单位设置为dp,则不会随着系统字体的变化而变化。

在每次的手机厂商新品发布会上,我们都会听到关于手机的介绍,比如手机的屏幕分辨率,多大尺寸等等。而当我们知晓一个手机的屏幕分辩率和手机尺寸的时候,就可以计算出手机的物理像素密度,其计算公式为:

需要注意的是,PPI是Android手机物理像素密度,而非在Android开发过程中我们经常说到的像素密度。

屏幕密度与dpi密切相关,dpi是每英寸的点数。也就是说,密度越大,每英寸内容纳的点数就越多。

在android.util包下有个DisplayMetrics类可以获得密度相关的信息。最重要的是densityDpi这个成员,它有如下几个常用值:

DENSITY_LOW = 120

DENSITY_MEDIUM = 160 //默认值

DENSITY_TV = 213 //TV专用

DENSITY_HIGH = 240

DENSITY_XHIGH = 320

DENSITY_400 = 400

DENSITY_XXHIGH = 480

DENSITY_XXXHIGH = 640

dpi的值主要是通过displayMetrics获取的,获取方式为:

val densityDpi = resources.displayMetrics.densityDpi。

dp和dip是一样的,设备独立像素,这个和设备硬件有关,不同设备有不同的显示效果。而通常在做android项目的时候,为了适配市场上面众多的手机屏幕分辩率,我们一般都会采用dp。dp是Android基于物理设备的PPI抽象出来的一个单位。它是以160dpi的屏幕为基准定义的,在160dpi的屏幕上1dp=1px,那么由此我们就可以得出其计算公式:

换算公式:1dp = (屏幕ppi/160)px或者是px = (屏幕ppi/160)*1dp。举个例子:假设ppi = 320,那么1dp = 2px。

下面我们来演练一下:

如图所示,手机的屏幕分辩率为1080X1920,尺寸为5寸,从而计算得出PPI的值为440,再通过PPI计算出1dp 约等于3px。假设现在美工给的图上面有一个a图标,距离顶部的距离为30px,那么根据最终我们的换算结果可知,我们设置为10dp就可以达到完美的显示效果。

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作为其他元素的单位。当然,也可以考虑使用矢量图形,而不是用位图

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 的模拟器上,都是一半屏的长度。


文章标题:关于spandroid的信息
网站路径:http://cdxtjz.cn/article/dsdoohc.html

其他资讯