适配

今日头条适配(AndroidAutoSize)

2019-10-23  本文已影响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

AutoSizeConfig.getInstance().setCustomFragment(true);
public class CustomAdaptFragment extends Fragment implements CustomAdapt {

    @Override
    public boolean isBaseOnWidth() {
        return false;
    }

    @Override
    public float getSizeInDp() {
        return 667;
    }
}
public class CancelAdaptFragment extends Fragment implements CancelAdapt {

}

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

AutoSizeConfig.getInstance().getUnitsManager()
        .setSupportDP(false)
        .setSupportSP(false)
        .setSupportSubunits(Subunits.MM);
上一篇 下一篇

猜你喜欢

热点阅读