美文网首页适配
今日头条适配(AndroidAutoSize)

今日头条适配(AndroidAutoSize)

作者: 玖玖君 | 来源:发表于2019-10-23 13:10 被阅读0次

    今日头条屏幕适配方案

    1)配置

    基于头条屏幕方案的AndroidAutoSize,使用方式,先在module下的build.gradle下添加依赖

     implementation 'me.jessyan:autosize:1.1.2'
    

    然后在module的AndroidManifest权限菜单下添加基本设计图的尺寸,这里我们是使用360*630dp作为基本尺寸单位,

    这样配置工作就完成了(真的不吹牛逼,只需要以下这一步,框架就可以对项目中的所有页面进行适配)
    
    <manifest>
        <application>            
            <meta-data
                android:name="design_width_in_dp"
                android:value="360"/>
            <meta-data
                android:name="design_height_in_dp"
                android:value="640"/>           
         </application>           
    </manifest>
    
    

    一般来说,只要我们按照基准设计图的尺寸写AutoSize就可以为我们进行适配了,当在一些特殊情况下我们还要进行一些配置。

    头条的适配方案是选择高度或宽度两者之一为基准进行适配(姑且不管原理),在该库的AutoSizeConfig类的源码中我们可以看到isBaseOnWidth默认就是true,也就是说改库默认就是以宽度进行适配的

    Activity

    当某个 Activity 的设计图尺寸与在 AndroidManifest 中填写的全局设计图尺寸不同时,可以实现 CustomAdapt 接口扩展适配参数

    public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt {
    
        @Override
        public boolean isBaseOnWidth() {
            return false;
        }
    
        @Override
        public float getSizeInDp() {
            return 667;
        }
    }
    当某个 Activity 想放弃适配,请实现 CancelAdapt 接口
    public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {
    
    }
    

    Fragment

    • 首先开启支持 Fragment 自定义参数的功能
    AutoSizeConfig.getInstance().setCustomFragment(true);
    
    • 当某个 Fragment 的设计图尺寸与在 AndroidManifest 中填写的全局设计图尺寸不同时,可以实现 CustomAdapt 接口扩展适配参数
    public class CustomAdaptFragment extends Fragment implements CustomAdapt {
    
        @Override
        public boolean isBaseOnWidth() {
            return false;
        }
    
        @Override
        public float getSizeInDp() {
            return 667;
        }
    }
    
    • 当某个 Fragment 想放弃适配,请实现 CancelAdapt 接口
    public class CancelAdaptFragment extends Fragment implements CancelAdapt {
    
    }
    

    Subunits (请认真看 demo-subunits,里面有详细介绍)

    • 可以在 pt、in、mm 这三个冷门单位中,选择一个作为副单位,副单位是用于规避修改 DisplayMetrics#density 所造成的对于其他使用 dp 布局的系统控件或三方库控件的不良影响,使用副单位后可直接填写设计图上的像素尺寸,不需要再将像素转化为 dp
    AutoSizeConfig.getInstance().getUnitsManager()
            .setSupportDP(false)
            .setSupportSP(false)
            .setSupportSubunits(Subunits.MM);
    

    相关文章

      网友评论

        本文标题:今日头条适配(AndroidAutoSize)

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