AndroidAutoSize使用时遇到的特麻烦bug

前言

维护、迭代老项目时候遇到的事情。

makefile 复制代码
com.github.JessYanCoding:AndroidAutoSize

代码

kotlin 复制代码
AutoSizeConfig.getInstance()
            .setCustomFragment(false)
            .setExcludeFontScale(true)
            .setLog(false)
            .setBaseOnWidth(true)
            .setUseDeviceSize(false) //屏幕适配监听器
            .setOnAdaptListener(object : onAdaptListener {
                override fun onAdaptBefore(target: Any?, activity: Activity?) {
                  ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application!!!
                    AutoSizeConfig.getInstance().setScreenWidth(720)
                    AutoSizeConfig.getInstance().setScreenHeight(1080)
                }

配置了固定的尺寸。

adapter的数据加载异常

开始的时候没有理会,因为UI异常并不明显,实际是源代码的开发者,用了些邪法,让字体显示的位置比较固定,但实际的字体大小是不同的。

后来在增加新的显示UI时,就发现问题了。

我直接移除了邪法的控件设置,异常就特别的明显。

字体大小完全不同。

adapter下来刷新就出现问题。

特别是在表现上,从另一个Activity跳转回来,就会触发异常问题。

最后的解决

scss 复制代码
    /**
     * 重新设置AutoSize-density值
     * 否则,item会使用原屏幕的dpi值生成UI
     */
    private void resetDensity() {
        // 在刷新数据前先触发 AutoSize 适配,确保 RecyclerView 使用正确的 density
        AutoSizeConfig.getInstance().setScreenWidth(720);
        AutoSizeConfig.getInstance().setScreenHeight(1080);
        AutoSizeCompat.autoConvertDensityOfGlobal(getResources());
    }
    //刷新adapter
    productAdapter.setNewData(goodsDataLists, gridLayoutManager, id);

增加了如此的设置之后,adapter总算是没有发生UI显示的异常了。

相关推荐
java1234_小锋4 小时前
【技术专题】HTML5 网页技术 - HTML5 Canvas 基础以及动画入门
前端·html·html5
知了学历孙老师7 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
ShineWinsu9 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
福兮说10 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
程序员老赵11 小时前
Docker 部署青龙面板:轻松搭建定时任务管理平台
前端·docker·开源
Swot11 小时前
Asciidoctor 公式数字下标错位问题:原因分析与解决方案
前端
Swot11 小时前
leo-editor 中将 Markdown 内容转成 asciidoc 格式
前端
狒狒AI12 小时前
Remotion / GSAP+Three / HyperFrames / Skia 四栈实测:代码渲染知识视频的选栈方法(附开源技能)
前端·人工智能·aigc
修炼的dance12 小时前
浏览器里导出H.265,8.5秒和55.5秒差在硬件
前端
补码缩写12 小时前
WebCodecs选编码器,探测之后还要验解码和播放
前端