android适配基础

作者: 金馆长说 | 来源:发表于2017-04-01 17:46 被阅读262次
    android适配基础:

    屏幕分辨率:分辨率就是屏幕的横纵像素点,单位是PX 1px=1像素点。一般是高宽,比如1280800 代表竖向的像素点是1280,横是800。
    屏幕尺寸:屏幕对角线的长度,单位是英寸 1英寸=2.54厘米。
    屏幕像素密度:指每英寸的像素点,单位DPI。屏幕像素密度和屏幕尺寸和分辨率有关。
    换算规则:

    • 160dpi下 1dp=1px
    • 240dpi下 1dp=1.5px 。
    • 320就是1dp=2px
    • 160 1倍图
    • 240 1.5倍图
    • 320 2倍图

    android适配可以分成三种

    ** 1.图片大小的适配**
    2.字体大小的适配
    3.布局大小的适配


    下面是官网给的倍数图和对应的dpi


    1.图片大小适配
    google为我们提供了drawable文件夹里面有
    drawalbe-mdpi 120dp~160dp
    drawalbe-hdpi 160dp~240dp
    drawalbe-xhdpi 240dp~320dp
    drawalbe-xxhdpi 320dp~480dp
    drawalbe-xxxhdpi 480dp~640dp

    mipmap-hdpi
    它只是用来放启动图标的
    它的好处就是,你只用放一个mipmap图标,它就会给你各种版本(比如平板,手机)的apk自动生成相应分辨率的图标,以节约空间。

    匹配规则:

    1. 如果当前屏幕密度是160dp那么android程序就会去找 drawable-hdpi里面的图片文件,每个文件对应一个dpi的范围。
    2. 如果当在对应的文件夹中没有匹配到资源,那么程序优先回去更高dpi文件中去匹配,如果没有更高的dpi文件了,那就匹配drawable-nodpi,如果也找不到那么就会去当前级别以下的,低级别的dpi中找到为止。
    . 适配尽量适配高分辨率的图片,这样可以节省内容开销。如果当前是xhdpi级别,匹配的资源没有,如果找到的是一个低级别的dpi。那就会导致图片放大,损耗内存开销。

    2.字体大小

    sp

    3.布局大小的适配

    能用权重的就是用权重,这样可以达到100%适配。尽量少用dp去写死布局的大小,这样有可能会出现在不同的dpi手机中出现不小不是很统一的情况,原因是你比如写的dp的产出是UI根据 dpi160 1280*800的分辨率上标注的,如果运行到dpi320的手机上那就可能出现换算结果不一致的问题,所以需要单独针对这个分辨率去标注一下。

    最小宽度限定符values-sw820dp
    这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,
    这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。

    **values-w820dp **
    意思就是最小width xxxdp就会去匹配里面的的资源文件
    layout-w600dp 带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和sw<N>dp不同的是,
    当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。

    layout-h600dp
    这个后缀的使用方式和w<N>dp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用h<N>dp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。

    ** values-large Android3.2之前的平板布局**
    values-sw600dp-land 横屏
    values-sw600dp-port 竖屏

    适配参考

    相关文章

      网友评论

        本文标题: android适配基础

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