AndroidAutoSize
AndroidAutoSize copied to clipboard
Popup 怎么取消适配呢 ,只是Popup取消适配,Popup依附的Activity还保持适配
Popup 怎么取消适配呢 , 只是Popup取消适配,Popup依附的Activity还保持适配
打开 Popup 之前取消适配,Popup 打开之后,恢复之前的 density
打开 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 会无效, 不重写 会有极小概率适配失效,有无方法判断适配是否生效呢。
框架中实现的 取消适配 只是在 App 运行的某一段时间或生命周期将 density 设置成了 APP 默认的 density ,让你有取消适配的感觉
同理你在重写了 Activity 中的 getResources() 后,想要实现以上需求,就需在 getResources() 中有个判断条件,在打开 Popup 之前到 Popup 页面绘制到屏幕上这段时间,都设置默认的 density 值,否则执行你之前设置 density 的逻辑
换成的白话就是,
@Override
public Resources getResources() {
if(flag) {
AutoSizeCompat.cancelAdapt(activity)
} else {
AutoSizeCompat.autoConvertDensityOfGlobal((super.getResources())
}
return super.getResources();
}
Popup show 前将 flag 设置为 true,当 Popup 页面绘制后,将 flag 设置为 false