android 屏幕适配,hdpi,xhdpi,xxhdpi理解,常见出图

时间:2022-10-17 21:05:27

屏幕适配

首先理解下各个尺寸单位代表的意思

  • 尺寸含义
    1. px: 像素
    2. dip: Density-independent pixel 独立像素密度
    3. dpi: dot per inch 分辨率
    4. ppi: pixel per inch 指每英寸所拥有的像素

      ppi计算:(宽度的平方 + 高度的平方)开根号 / 对角线的长度
    5. Density: density值表示每英寸有多少个显示点,与分辨率是两个概念

      density计算:dpi / 160 密度值

各个单位之间的互换

  • 公式: dp = px / (dpi / 160) px = dp * (dpi / 160) dp = px / denisity or dp = px / (dpi / 160)

    • dpi: 是厂商定义的常量值 = 根据勾股定理开根除4

      ldpi: dpi 120 –> 240 * 320

      mdpi: dpi 160 –> 320 * 480

      hdpi: dpi 240 –> 480 * 800

      xhdpi: dpi 320 –> 720 * 1080 如:(720*720+1080*1080)开根号 除 4 = 320dpi

      xxhdpi:dpi 380 –>1080p 1920*1080 高清
    • px :手机像素 = dp * (dpi / 160)

      ldpi: 120px–> dp = 120 / (120 / 160) = 160dp

      mdpi: 160px–> dp = 160 /(160/160) = 160dp

      hdpi: 240px–> dp = 240 /(240/160) = 160dp

      xhdpi:360px–> dp = 360 / (320/160)= 180dp

    • densityDip:值表示每英寸有多少个显示点 = px / denisity

      QVGA: density=0.75 densityDpi=120 QVGA(240*320)

      HVGA:density=1.0 densityDpi=160 HVGA(320*480)

      VGA:density=1.0 densityDpi=160 VGA(480*640)

      WVGA:density = 1.5 densityDpi=240 WVGA(480*800)

      WQVGA:density=2.0 densityDpi=120 WQVGA(240*400)

      而当densityDip=160时,1dp=1px。

设计资源紧张怎么办?

在现在的App开发中,基本都会有iOS和Android版本,有些公司为了保持App不同版本的体验交互一致,还有些公司的设计资源可能比较紧张,这些情况下iOS和Android版本基本是一个设计师主导,而大多数情况下设计师可能更会以iPhone手机为基础进行设计,包括后期的切图之类的。这个时候身为Android开发人员你是否还要求设计师单独为Android端切一套图片资源呢?这会让你们的设计师崩溃的,下面就来告诉一个项目中总结的更棒的方法。

出一套图,有人肯定会觉得使用最新的iPhone6(6s和6的尺寸以及分辨率都一样)来做原型设计,而iPhone6的屏幕分辨率为1334×750, 屏幕尺寸为4英寸,根据勾股定理(a^2 + b^2 = c^2)1334^2+750^2, 然后再对其开根号可求出屏幕对角线的分辨率为:1530,除以4可得出iphone6的dpi:1530/4≈382 可以看出iPhone5的屏幕的dpi约等于380, 刚好属于xhdpi,但是好的产品一般是以用户群体来作标准的,不是所有人都用得起i6,用得起6p这些高清屏手机;

目前我们公司是以iPhone5(5s和5的尺寸以及分辨率都一样)来做原型设计,而iPhone5的屏幕分辨率为640X1164, 屏幕尺寸为4英寸,根据勾股定理算出iPhone5分辨率为:1328,dpi为:320, 刚好属于xhdpi; 并且xhdp在xxhdpi上的显示效果也相差不多;

xhdpi是目前最大市场

一般情况下只需要提供一套大的dpi的图片就ok了,现在市面手机分辨率最大可达到1080X1920的分辨率,如Nexus6p,2560×1440,dpi更是高于xxhdpi,但是毕竟还没普及,目前市面上最普遍的高端机的分辨率还多集中在720X1080范围,也就是多集中在xhdpi,所以目前来看xhpdi规格的图片成为了首选。当然随着技术规格的提高以后发展,以后可能市场上xxdpi的手机会越来越普遍,但这是后话。

  • .因此得出结果

    出图:效果图(主要就1套)

    xhdpi: 720 * 1280

图片的简单适配

  • 布局适配

    不同的手机的图片放到 对应的分辨率的目录下drawable-xxxx

    在layout的后面添加xxx,添加的布局名称要要一致

    ldpi: dpi 120 –> 240 * 320

    mdpi: dpi 160 –> 320 * 480

    hdpi: dpi 240 –> 480 * 800

    xhdpi: dpi 320 –> 720 * 1080

  • 动态的布局适配

    一般屏幕适配也有通过margin或者权重来去做屏幕的适配