`
yxwang0615
  • 浏览: 559717 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

android 对dp单位的理解

 
阅读更多


什么是dp?

dp就是dip,device independent pixels(设备独立像素). dip与屏幕密度(density)有关,而屏幕密度又与具体的硬件有关。

QVGA屏(分辨率为:320px * 240px) density=120
HVGA屏(分辨率为:480px * 320px) density=160
WVGA屏(分辨率为:800px * 480px) density=240

apk的资源包中,当屏幕density=240时使用hdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=240时,使用hdpi标签的资源
从 Android 2.2 开始增加了xhdpi分类,
当屏幕density=320时,使用xhdpi标签的资源

Android开发人员一般不考虑屏幕的分辨率,而是它的密度。Android应用开发者在定义布局的UI时,会以密度无关像素(DP)的方式表达布局的维度和位置,这样确保UI在不同密度的屏幕上得以正确显示。

Android Design [1] 里把主流设备的 dpi 归成了四个档次,120 dpi(low)、160 dpi(medium)、240 dpi(high)、320 dpi(xhigh).Android Developers关于dp的文档中px和dp的转换公式:px = dp * (dpi / 160),这里的dpi是归一化后dpi,可选的值只能是120、160、240、320,并非设备真实的dpi。

【切图注意】
从基准线设计的屏幕(记住基线布局设置在320*480)上获取了一个100*100像素的位图图标。将相同的100*100图标配置在lDPI屏幕,该图标会显得很大很模糊。同样地,将其配置在hDPI屏幕上,它会显得太小(由于设备的每英寸的点数比mDPI屏幕多)要调整不同的设备屏幕密度,我们需要在四种密度大小之间按照3:4:6:8缩放比例。使用这些比率,通过简单的计算,android创造四个不同的版本的位图,以供开发生产
75*75对应低密度屏幕(如0.75); ---ldpi
100*100对应中等密度的屏幕(基准); ---mdpi
150*150对应高密度屏幕( 1.5); ---hdpi
200*200对应超高密度显示屏( 2.0)。 ---xdpi

现在有很多应用程序开发商为了降低安装包的大小,只使用一套hdpi资源或者一套xhdpi资源,而不提供mdpi资源或ldpi资源,希望在mdpi和ldpi设备上有系统完成缩放适应,虽然可行,但是我们不应忽视因为缩放带来的图像模糊、显示效果不佳的现象。


【扩展】
Android应用Icon大小在不同分辨率下定义:
对于Android平台来说,不同分辨率下Icon的大小设计有着不同的要求,对于目前主流的HDPI即WVGA级别来说,通常hdpi的应用icon大小为72x72,而标准的mdpi即hvga为48x48,QVGA使用了ldpi,图标为32x32,常见的Android图标大小设计规范如下表所示:
Launcher 和 Menu:36 x 36 px ,48 x 48 px ,72 x 72 px
Status Bar、Tab、Dialog和List View:
24 x 24 px ,32 x 32 px ,48 x 48 px

切图是3的倍数的px,能保证计算出来的dp始终是整数。

 

 

 

从UI设计师的角度理解:

 

px(像素)是我们UI设计师在PS里使用的(不解释),同时也是手机屏幕上所显示的(也不解释)

 

dp是开发写layout的时候使用的尺寸单位,sp是开发写layout时关于字体的字号单位,且dp与sp总为1:1关系

 

 

 

Android支持四种不同的dpi模式:ldpi mdpi hdpi xhdpi

 

 

 

一般地,手机分辨率与所运行的dpi模式是匹配的,例如hvga(320x480像素)的手机屏幕一般在3.5英寸左右,运行在mdpi模式下(也有例外,稍后解释)(这个是ROM控制的,app不能改变)。当运行在mdpi下时,1dp=1px:也就是说设计师在PS里定义一个item高48px,开发就会定义该item高48dp;Photoshop中14px大的字体,开发会定义为14sp。

 

 

 

对于一部wvga(480x800)手机(G7、N1、NS),一般是运行在hdpi模式下。当运行在hdpi模式下时,1dp=1.5px:也就是说设计师在PS里定义一个item高72px,开发就会定义该item高48dp;Photoshop中21px大的字体,开发会定义为14sp。

 

 

 

所以,当你的app需要适配多个dpi模式的时候(例如同时适配mdpi与hdpi),若你在wvga下做设计,你需要将你的各数值都为3的倍数,并在切图标注时将所有的数字除以3乘以2换算成dp,这样开发的同一套layout就能用在两个不同的dpi模式下,而不是写两套layout。

 

 

 

mdpi与hdpi是2:3的关系

 

mdpi与xhdpi是1:2的关系

 

ldpi与mdpi是3:4的关系

 

 

 

 

参考url:

http://www.miiceic.org.cn/zixun/jishu_4763.html

http://blog.csdn.net/eggcalm/article/details/7006378

http://blog.sina.com.cn/s/blog_6b8c21fa0101957d.html

http://www.oschina.net/question/234345_40079

http://www.zhihu.com/question/20697111/answer/15894155

http://www.zhihu.com/question/19625584

 

分享到:
评论

相关推荐

    Android像素转换dp转px或相反

    通过使用dp单位和适当的转换函数,我们可以确保用户在不同屏幕尺寸和密度的设备上都能获得良好的视觉体验。同时,Android还提供了sp(scaled pixel)单位,用于处理字体大小,它会根据用户的字体缩放设置自动调整...

    android dx和dp 像素和dp之间转换的工具类

    理解并正确使用`dp`单位以及像素与`dp`之间的转换,对于创建适应各种屏幕尺寸和密度的Android应用至关重要。通过这个工具类,开发者可以方便地在代码中进行这些转换,确保UI元素在不同设备上看起来大小一致。因此,...

    Android dp和px/sp等单位相互转换

    在Android开发中,理解并掌握dp、px、sp等单位之间的转换是非常重要的,因为它们直接影响到界面元素在不同分辨率和像素密度设备上的显示效果。dp(density-independent pixels)是独立像素,px(pixels)是像素,sp...

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

    以下是对Android中几种主要计量单位的详细解释: 1. **px(像素)**:像素是屏幕的最小显示单位,代表显示器上一个点的颜色。px是绝对单位,与屏幕的物理分辨率直接相关,因此在不同密度的屏幕上,相同数量的px会...

    Android-Android将px值转换成dp

    首先,理解px和dp的区别至关重要。px是物理像素,是屏幕上的实际点,而dp是Android系统为了提供跨不同密度设备的统一视觉体验而引入的概念。1dp在不同密度的屏幕上会映射到不同数量的px。例如,在mdpi(中等密度)...

    android布局单位sp,dp,pt,px的区别

    dp和sp因其对屏幕密度和用户偏好的适应性,成为了布局设计中的首选单位。pt虽然在传统印刷领域广泛使用,但在移动应用开发中并不常见,而px则应谨慎使用,仅在需要精确控制像素级别的场景下采用。通过合理利用这些...

    Android中的长度单位详解(dp、sp、px、in、pt、mm).pdf

    本文将深入探讨Android中常见的长度单位:dp、sp、px、in、pt以及mm,帮助开发者们更好地理解和应用这些单位。 首先,我们要知道Android系统支持多种尺寸单位,主要是为了适应不同屏幕大小和分辨率的设备。以下是对...

    dip, dp, px, sp区别 android

    "Android 中的 dip, dp, px, sp 单位区别" Android 中的单位系统是...理解 Android 中的 dip, dp, px, sp 单位区别是非常重要的。只有当我们正确地选择和使用这些单位时,我们才能创建出高质量的 Android 应用程序。

    深入理解Android(卷3)

    10. **多设备适配**:掌握Android的屏幕适配策略,包括Density-independent Pixels (dp)和Sp单位,以及如何利用Android的碎片(Fragment)进行多屏幕支持。 11. **通知与消息推送**:学习Android的通知系统,以及如何...

    Android中dip、dp、sp、pt和px的区别

    在Android开发中,理解和使用各种尺寸单位是至关重要的,因为它们直接影响到应用的用户体验和界面适配性。本文将详细解析Android中常见的五种尺寸单位:dip(设备独立像素)、dp(密度无关像素)、sp(可缩放像素)...

    android-五大布局&单位详解

    同时,我们还将讨论Android中的单位系统,以便更好地理解和适配不同设备的屏幕尺寸。 1. 线性布局(LinearLayout) 线性布局是最基础的布局,它可以将子视图沿水平或垂直方向线性排列。通过设置`orientation`属性,...

    安卓 dp 适配 算法

    首先,理解`dp`的含义至关重要。`dp`是一种抽象单位,它与设备的物理像素无关,而是基于设备的密度。1dp在160dpi(dots per inch,每英寸像素点数,也称为MDPI,中等密度)的屏幕上等于1像素。在更高或更低密度的...

    安卓UI布局相关-计算自己手机的屏幕宽高density值px宽高dp的宽高及px和dp互转的科普.rar

    这篇资料主要关注的是如何获取和理解设备屏幕的相关属性,包括屏幕的宽度和高度,以及与像素密度(density)相关的px(像素)和dp(密度独立像素)单位之间的转换。这对于创建适应不同屏幕尺寸和密度的应用至关重要...

    比较android px sp dip单位

    在Android开发中,理解并正确使用像素(px)、密度独立像素(dp)和可缩放像素(sp)是非常重要的。这些单位是构建用户界面时必须掌握的基础知识,因为它们直接影响到应用在不同屏幕密度设备上的显示效果。让我们...

    Android双屏异显1

    8. **布局适配**: 设计时要考虑不同屏幕的尺寸和方向,使用`dp`和`sp`作为单位,确保内容在不同分辨率的屏幕上看起来合适。同时,可以使用`ConstraintLayout`等工具来灵活适应不同屏幕。 总的来说,实现Android双屏...

    基于Android中dp和px之间进行转换的实现代码

    在Android开发中,尺寸单位是理解用户界面布局和视觉效果的关键因素。dp(Density-independent Pixel)和px(Pixel)是两种常见的单位,它们在不同屏幕密度的设备上扮演着不同的角色。dp,也称为密度无关像素,是一...

    Android:Drawable样式和尺寸单位源代码

    本篇文章将深入探讨Android中Drawable的样式以及相关的尺寸单位。 首先,Drawable可以分为几大类,包括BitmapDrawable(位图图像)、ShapeDrawable(形状绘制)、LevelListDrawable(级别列表)、StateListDrawable...

    android编程中的单位

    正确理解和使用Android中的单位是开发高质量、具有良好用户体验的应用程序的关键之一。通过合理选择合适的单位,我们可以确保应用在各种设备上都具有良好的可读性和可操作性。希望本文能够帮助您更好地掌握Android...

Global site tag (gtag.js) - Google Analytics