Android屏幕适配之Autosize

Autosize是一款低成本的Android屏幕适配方案。通过在AndroidManifest.xml中配置设计宽度和高度,可以在不同分辨率的设备上实现良好的界面显示效果。支持横竖屏切换,并提供了详细的配置示例。
摘要由CSDN通过智能技术生成

目录

简介

使用

引用

配置

使用

布局.xml

代码.java

总结

补充

在AndroidX上出现这样的错误

解决方法


简介

        Autosize今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案。

使用

引用

     implementation 'me.jessyan:autosize:1.2.1'(可以去官网看看是否有最新的版本)

配置

<meta-data
    android:name="design_width_in_dp"
    android:value="宽" />

<meta-data
    android:name="design_height_in_dp"
    android:value="高" />

                在AndroidManifest.xml文件中的<application></application>标签内部配置,其中value值的宽高指的是UI效果图的实际分辨率(效果图与标注图分辨率必须一致),横竖屏切换置换宽高的配置。实际使用配置如下图:

使用

布局.xml

在布局中直接使用dp与sp去适配就好,没有什么好说的直接上例子

代码.java

在实际代码中我这边使用的的一个感觉比较使用的方法AutoSizeConfig.getInstance(),主要用来配置横竖屏分辨率,具体使用如下:

        //屏幕适配监听器
        AutoSizeConfig.getInstance().setOnAdaptListener(new onAdaptListener() {
            @Override
            public void onAdaptBefore(Object target, Activity activity) {
                //使用以下代码, 可以解决横竖屏切换时的屏幕适配问题
                //首先设置最新的屏幕尺寸,ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application !!!
                AutoSizeConfig.getInstance().setScreenWidth(ScreenUtils.getScreenSize(activity)[0]);
                AutoSizeConfig.getInstance().setScreenHeight(ScreenUtils.getScreenSize(activity)[1]);
                //根据屏幕方向,设置设计尺寸
                if (activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
                    //设置横屏设计尺寸
                    AutoSizeConfig.getInstance()
                            .setDesignWidthInDp(1280)
                            .setDesignHeightInDp(800);
                } else {
                    //设置竖屏设计尺寸
                    AutoSizeConfig.getInstance()
                            .setDesignWidthInDp(800)
                            .setDesignHeightInDp(1280);
                }
              
            }

            @Override
            public void onAdaptAfter(Object target, Activity activity) {
                
            }
        });

代码中的800与1280是我这边的设计稿分辨率。

若有想了解更多的可以去看一下源码:https://github.com/JessYanCoding/AndroidAutoSize

官方文档:一种极低成本的Android屏幕适配方式

总结

AutoSize使用比较简单使用,代码改动代价小,容易上手。

文章主要是我这边自身的使用总结,写的比较简单,使用是主要以参考为主,具体的需要结合使用者自身需求而定,也可以参考官方文档。

补充

在AndroidX上出现这样的错误

Rejecting re-init on previously-failed class
java.lang.Class<me.jessyan.autosize.FragmentLifecycleCallbacksImpl>:
java.lang.NoClassDefFoundError: Failed resolution of:
Landroid/support/v4/app/FragmentManager$FragmentLifecycleCallbacks;

解决方法

在gradle.properties文件中添加 “android.enableJetifier=true”,表示将依赖包也迁移到androidx

android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿末兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值