`
zzmccnu
  • 浏览: 76033 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android中px dpi dip density densityDpi 的相关说明

阅读更多

Android中px dpi dip density densityDpi 的相关说明

 

名词

解释

Px

(Pixel像素)

不同设备显示效果相同。这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px。也正是因为如此才造成了UI在小分辨率设备上被放大而失真,在大分辨率上被缩小。

Screen Size

(屏幕尺寸)

一般所说的手机屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的对角线的长度,而不是手机面积。我们可以根据勾股定理获取手机的宽和长,当然还有面积。

Resolution

(分辨率)

指手机屏幕垂直和水平方向上的像素个数。比如分辨率是480*320,则指设备垂直方向有480个像素点,水平方向有320个像素点。

Dpi

(dots per inch

  像素密度)

指每英寸中的像素数。如160dpi指手机水平或垂直方向上每英寸距离有160个像素点。假定设备分辨率为320*240,屏幕长2英寸宽1.5英寸,dpi=320/2=240/1.5=160

注意:该值对应于DisplayMetrics类中属性densityDpi的值。具体请参考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266669.html

Density

(密度)

指每平方英寸中的像素数。

Density=Resolution/Screen size

注意:在DisplayMetrics类中属性density的值为dpi/160,可用于pxdip的互相转换。具体请参考http://www.cnblogs.com/wader2011/archive/2011/11/28/2266684.html

Dip

(Device-independent pixel,设备独立像素)

同dp,可作长度单位,不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。dip和具体像素值的对应公式是dip =设备密度/160* pixel,可以看出在dpi(像素密度)为160dpi的设备上1px=1dip

Sp

(ScaledPixels

 放大像素)

主要用于字体显示(best for textsize)。根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字号单位。

总结

我们可以用下面的思路来解释为什么用dip代替px作单位:

  1. 设备最终会以px作为长度单位。
  2. 如果我们直接用px作为单位会造成UI在不同分辨率设备上出现不合适的缩放。因此我们需要一种新的单位,这种单位要最终能够以合适的系数换算成px使UI表现出合适的大小。
  3. Dip符合这种要求吗?

由dip和具体像素值的对应公式dip值 =设备密度/160* pixel值 可以知

pixel值=dip值/(设备密度/160)其中dip值是我们指定的长度大小,那么pixel值,160也是定植,也就是说UI最终的pixel值只受像素密度dip的影响,这个dip就相当于那个换算系数,这个系数的值是多少有设备商去决定。因此dip符合这种要求。

分享到:
评论

相关推荐

    修改系统density、densityDpi适配

    文章目录一、简述二、追根溯源三、实现3.1 定义Density用于对系统类值的修改3.2 在MainActivity中调用3.3 处理应用程序关于字体大小的监听3.4 如果多界面统一处理怎么办?3.4.1 BaseActivity3.4.2 监听应用程序的...

    UI——dp、dip、px、dpi、density概念及关系

    UI 开发中,常见的衡量单位有 dp、dip、px、dpi 和 density,这些单位之间存在一定的关系和转换公式,对于 Android 开发者来说,理解这些概念和关系非常重要。 dp(Device independent pixels,设备独立像素) dp ...

    Androd px转dip和sp

    1. `px`转`dip`或`sp`:公式是`(px / density) * densityDpi / 160`,其中`density`是屏幕密度(例如,hdpi是2,xhdpi是3),`densityDpi`是屏幕的像素密度(例如,hdpi是320,xhdpi是480)。 2. `dip`或`sp`转`px`...

    android屏幕适配px工具类

    在Android系统中,屏幕适配的核心是理解并利用密度独立像素(dp/dip)和像素比(scale density)。dp是一种抽象单位,与设备的物理像素无关,而是基于设备的密度进行计算。1dp在所有设备上都应该占据相同大小的空间...

    Android高级应用源码-计算自己手机的屏幕宽高,density值,px 宽高,dp 的宽高,及px 和dp互转的科普.zip

    在Android开发中,理解和掌握屏幕相关的参数对于创建适应不同设备的应用至关重要。本资源"Android高级应用源码-计算自己手机的屏幕宽高,density值,px 宽高,dp 的宽高,及px 和dp互转的科普.zip"提供了一个实践...

    Android-Android将px值转换成dp

    本篇文章将深入探讨如何将px值转换为dp值,以及在Android开发中的应用。 首先,理解px和dp的区别至关重要。px是物理像素,是屏幕上的实际点,而dp是Android系统为了提供跨不同密度设备的统一视觉体验而引入的概念。...

    Android设备中获取屏幕相关参数

    在Android系统中,开发者需要了解和处理屏幕的相关参数,以便为用户提供最佳的视觉体验。屏幕参数包括分辨率、密度(DPI)以及像素单位DP(Density-independent Pixel)与实际像素(PX)之间的转换关系。让我们深入...

    计算自己手机的屏幕宽高,density值,px 宽高,dp 的宽高,及px 和dp互转

    在Android开发中,理解和计算设备的屏幕属性是至关重要的,这包括屏幕的宽高、density值,以及像素单位px和密度无关像素dp之间的转换。这些参数对于应用的自适应屏幕显示至关重要,确保应用在不同分辨率和密度的设备...

    Android应用源码获取手机屏幕尺寸的代码段.zip

    在Android应用开发中,了解和获取手机屏幕的尺寸是非常重要的,这可以帮助我们适配不同的设备,提供良好的用户体验。本文将详细解析如何通过源码获取手机屏幕尺寸,并介绍相关的编程概念。 首先,Android系统提供了...

    安卓开发中dpi等单位换算关系

    在Android开发中,推荐使用dip而不是px,以确保布局在不同设备上的一致性。 通过以上分析可以看出,理解并正确使用这些单位对于Android应用开发至关重要。在设计用户界面时,使用dip可以确保应用在不同屏幕密度的...

    获取android手机的分辨率、像素密度等

    本文将深入探讨如何获取Android手机的屏幕宽度、屏幕高度、屏幕密度(density)、字体密度(font density)以及屏幕密度DPI。 首先,我们需要理解Android设备屏幕的基本概念: 1. 分辨率:指屏幕水平和垂直方向上的...

    一些常用的android 代码片段

    在Android中,像素(px)与设备独立像素(dip)之间的转换可以通过以下方法完成: ```java // dip转px public static int dip2px(Context context, float dipValue) { final float scale = context.getResources()....

    Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?1

    density 表示逻辑密度,是用于度量 Density Independent Pixel (dp) 单位的缩放因子,其中 1dp 在约 160dpi 的屏幕上等于 1px。densityDpi 是屏幕的物理像素密度,以每英寸像素数表示。density 与 densityDpi 的关系...

    android手机分辨率 密度 等各种信息

    android手机分辨率 密度 等各种信息 String str = " 手机屏幕分辨率为: " + widthPixels + "*" + ... " 屏幕密度DPI(每寸像素:120/160/240/320): " + densityDpi + "r ydpi: " + ydpi + " xdpi: " + xdpi ;

    android弹出PopupWindow

    在Android开发中,dp(density-independent pixels)是一种与设备独立的像素单位,而px(pixels)是实际的屏幕像素。转换公式如下: - dp转px:`px = dp * (densityDpi / 160)` - px转dp:`dp = px / (densityDpi /...

    关于meta viewport中target-densitydpi属性详解(推荐)

    在实际应用中,若希望页面在不同分辨率的设备上都能正常显示,可以考虑使用 `target-densitydpi=360`,这是一个常见的做法,因为许多现代设备的像素密度接近于360dpi(如iPhone和一些高端Android设备)。但是,这种...

    获取手机屏幕尺寸的代码段.zip

    由于Android系统中dp(density-independent pixel)是设备无关像素,我们可以将像素值除以密度得到dp值。最后,我们计算了屏幕的宽高比。 这段代码对于开发者来说非常有用,可以帮助他们适配不同尺寸和密度的屏幕,...

    Android-获取手机屏幕大小屏幕分辨率屏幕密度导航栏高度标题栏高度

    在Android开发中,了解设备的屏幕属性是至关重要的,这些属性包括屏幕大小、屏幕分辨率、屏幕密度以及系统组件的高度如导航栏和标题栏。这些信息对于优化应用布局、适配不同设备以及提供良好的用户体验至关重要。...

Global site tag (gtag.js) - Google Analytics