AndroidAutoSize icon indicating copy to clipboard operation
AndroidAutoSize copied to clipboard

Popup 怎么取消适配呢 ,只是Popup取消适配,Popup依附的Activity还保持适配

Open byc4426 opened this issue 4 years ago • 5 comments

Popup 怎么取消适配呢 , 只是Popup取消适配,Popup依附的Activity还保持适配

byc4426 avatar Aug 07 '21 10:08 byc4426

打开 Popup 之前取消适配,Popup 打开之后,恢复之前的 density

JessYanCoding avatar Aug 09 '21 01:08 JessYanCoding

打开 Popup 之前取消适配,Popup 打开之后,恢复之前的 density @override public Resources getResources() { //需要升级到 v1.1.2 及以上版本才能使用 AutoSizeCompat AutoSizeCompat.autoConvertDensityOfGlobal((super.getResources());//如果没有自定义需求用这个方法 AutoSizeCompat.autoConvertDensity((super.getResources(), 667, false);//如果有自定义需求就用这个方法 return super.getResources(); }

Activity 重写 getResources() 后 cancelAdapt 会无效, 不重写 会有极小概率适配失效,有无方法判断适配是否生效呢。

byc4426 avatar Aug 09 '21 08:08 byc4426

框架中实现的 取消适配 只是在 App 运行的某一段时间或生命周期将 density 设置成了 APP 默认的 density ,让你有取消适配的感觉

同理你在重写了 Activity 中的 getResources() 后,想要实现以上需求,就需在 getResources() 中有个判断条件,在打开 Popup 之前到 Popup 页面绘制到屏幕上这段时间,都设置默认的 density 值,否则执行你之前设置 density 的逻辑

JessYanCoding avatar Aug 10 '21 06:08 JessYanCoding

换成的白话就是,

  @Override
    public Resources getResources() {
         if(flag) {
            AutoSizeCompat.cancelAdapt(activity)
         } else {
            AutoSizeCompat.autoConvertDensityOfGlobal((super.getResources())
        }
        return super.getResources();
    }

JessYanCoding avatar Aug 10 '21 06:08 JessYanCoding

Popup show 前将 flag 设置为 true,当 Popup 页面绘制后,将 flag 设置为 false

JessYanCoding avatar Aug 10 '21 06:08 JessYanCoding