当前位置:首页 » 安卓系统 » ppiandroid

ppiandroid

发布时间: 2025-01-24 10:25:50

⑴ 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就可以达到完美的显示效果。

⑵ iOS、Android等开发中px、ppi、pt、pd、dpi的个人理解

作为一名iOS开发者,以前对这些概念懵懵懂懂,最近看了很多资料记录下对这些概念的理解,主要以iOS和Android平台为切入

在iphone3gs的时候,屏幕的分辨率为320x480px、ppi =164 ,这时苹果把iOS系统的逻辑分辨率也设计为320x480pt 、dpi = 164 ,并且后面一值遵循这个UI设计规范(1pt 的大小约等于ppi为164的情况下单个像素的大小)。在没有出现plus及iphonex系列的之前的设备的都是dpi≈164, 1pt 的物理大小是固定的,但对应的像素有可能不一样,后期出现的plus及iphonex系列的dpi都比164小一点点,所以1pt的大小也对应的有变大一点点,但是这变化是很小的,应该是苹果系统级别的大屏适配吧 。

苹果的设计规范一直是在保持dpi基本不变的情况下,设备分辨率和逻辑分辨率的是整数倍的缩放关系,但是在plus系列中,虽然开发的时候我们使用@3倍关系做设计开发,但是实际上他们之间是没有@3倍关系的,实际的缩放应该是@2.6倍,那为什么苹果不按照规范来呢,这个我也不知道,但是可以分析一下如果苹果严格按照@3倍来应该是怎样的。

可能因为Android的开源属性和终端太乱太杂,让安卓不能像iOS那样对于不同的设备在系统级别设置逻辑分辨率来方便开发者开发,但是Android也有很好的解决方案就是使用pd作为逻辑分辨率,从pd定义可知(幕像素点密度为160ppi时1px长度),pd是个固定的物理大小单位。因此如果以pd计算dpi的话,那dpi在不同设备上应该是一样的160dpi,和iOS以dpi≈164基本差不多,所以在Android、iOS设计开发的时候才会把他们两等同。

android图

热点内容
linuxio文件 发布:2025-01-24 13:40:21 浏览:435
在excel设密码如何取消 发布:2025-01-24 13:38:54 浏览:480
电脑装存储时不能开机 发布:2025-01-24 13:38:52 浏览:282
2000人同时在线的小程序需要什么服务器 发布:2025-01-24 13:37:17 浏览:850
怎么搭建linux服务器配置 发布:2025-01-24 13:37:16 浏览:110
安卓版什么时候上线麻将模式 发布:2025-01-24 13:32:48 浏览:963
算法实验分析 发布:2025-01-24 13:20:25 浏览:135
安卓和ios步数哪个准确 发布:2025-01-24 13:12:13 浏览:290
怎么给电脑换配置 发布:2025-01-24 13:04:04 浏览:920
如何修改服务密码10086 发布:2025-01-24 12:44:27 浏览:513