前言
维护、迭代老项目时候遇到的事情。
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显示的异常了。