美文网首页
Android-屏幕适配全攻略

Android-屏幕适配全攻略

作者: wayDevelop | 来源:发表于2018-05-15 19:26 被阅读0次

    举个例子:屏幕分辨率为:1920*1080,屏幕尺寸为5吋的话,那么dpi为440

    dpi计算公式: 像素密度范围


    image.png

    用于区分不同的像素密度。

    名称 像素密度范围 图片大小
    mdpi 120dp~160dp 48×48px
    hdpi 160dp~240dp 72×72px
    xhdpi 240dp~320dp 96×96px
    xxhdpi 320dp~480dp 144×144px
    xxxhdpi 480dp~640dp 192×192px

    ndroid项目后应该可以看到很多drawable文件夹,分别对应不同的dpi
    drawable-ldpi (dpi=120, density=0.75)
    drawable-mdpi (dpi=160, density=1)
    drawable-hdpi (dpi=240, density=1.5)
    drawable-xhdpi (dpi=320, density=2)
    drawable-xxhdpi (dpi=480, density=3)
    对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8 的比例进行缩放。

    image

    如上面例子,屏幕密度计算出来为440dpi 查询上面表的归属320dp~480dp 之间
    则屏幕密度为xxhdpi density为440/160
    因此我们也可以计算出需要做适配的values-swXXXX,屏幕的宽度为 1080/3=360
    则需要新建文件values-sw360dp

    只要density理解到了,dpi的理解就没有问题了,它就只跟density有关系。
    关系为:dpi = density✖160
    这里的160也是一个dpi值,只是160dpi被置为标准dpi。

    如果我们确定一个基准值后便可以开始做适配
    比喻用values-sw800dp为基准

     <dimen name="dp1">1.0dp</dimen>
    <dimen name="dp2">2.0dp</dimen>
    

    values-sw480dp-land里面的dimens.xml分别乘以0.6来获得(因为480/800等于0.6)

     <dimen name="dp1">0.6dp</dimen>
    <dimen name="dp2">1.2dp</dimen>
    

    以此类推。。。。

    ldpi QVGA (240×320)
    mdpi HVGA (320×480)
    hdpi WVGA (480×800),FWVGA (480×854)
    xhdpi 720P(1280720)
    xxhdpi 1080p(1920
    1080 )
    xxxhdpi 4K(3840×2160)

    mdpi、hdpi、xdpi、xxdpi、xxxdpi
    在Google官方开发文档中,说明了 ** mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 ** 的尺寸比例进行缩放。例如,一个图标的大小为48×48dp,表示在mdpi上,实际大小为48×48px,在hdpi像素密度上,实际尺寸为mdpi上的1.5倍,即72×72px,以此类推。

    dimens 适配的原理

    令控件占据屏幕的一半,必定是控件根据不同的屏幕来变化尺寸(dp值),这里的思路是在 xml 文件中填写一个占位符,系统运行的时候会根据不同的屏幕尺寸把占位符替换成不同的dp值。

    为了实现上面的逻辑需要: 1 定义一个基准屏幕,例如 分辨率是760*1280 密度是 xhdpi 的屏幕,这样屏幕的宽度就是 760/2 = 380dp 。 2 创建不同的 dimes 文件,以便适应不同的屏幕。

    例如在 stuido 开发中 利用Nexus4 来开发 xml。也可以创建一个自定义屏幕完全和基准屏幕相同。 在xml 只需要设置 android:layout_width="@dimen/dp190" 即可。这样在基准屏幕上 dp190 会转换为 190dp 正好是 380dp 的一半。至于在其他屏幕上的转换就需要进行下一步 dimes 文件的配置了。

    参考
    https://www.cnblogs.com/soaringEveryday/p/4835839.html
    https://blog.csdn.net/hepann44/article/details/80456233
    https://blog.csdn.net/qq_37165429/article/details/78998442
    自动生成dimens文件

    相关文章

      网友评论

          本文标题:Android-屏幕适配全攻略

          本文链接:https://www.haomeiwen.com/subject/ytvydftx.html