Closed zhuzhushang closed 3 years ago
日志
2021-04-30 15:30:38.098 30061-30061/com.noahedu.learnstore D/AndroidAutoSize: com.noahedu.learnstore.framework.subact.MainActivity used the global configuration. 2021-04-30 15:30:38.100 30061-30061/com.noahedu.learnstore D/AndroidAutoSize: The com.noahedu.learnstore.framework.subact.MainActivity has been adapted! MainActivity Info: isBaseOnWidth = true, designWidthInDp = 768.000000, designWidthInSubunits = 768.000000, targetDensity = 2.083333, targetScaledDensity = 2.083333, targetDensityDpi = 333, targetXdpi = 2.083333, targetScreenWidthDp = 768, targetScreenHeightDp = 986
原本只是以为有地方给density重新赋值了,于是全局搜索给density赋值的地方,结果没有发现。 无意间看到baseactivity重写了getResource方法,发现这段代码也可以density重新赋值。凌乱...
@Override public Resources getResources() { Resources res = super.getResources(); Configuration config = new Configuration(); config.setToDefaults(); res.updateConfiguration(config, res.getDisplayMetrics()); return res; } /** * Set this object to the system defaults. Configuration类构造会调用此方法 */ public void setToDefaults() { fontScale = 1; mcc = mnc = 0; mLocaleList = LocaleList.getEmptyLocaleList(); locale = null; userSetLocale = false; touchscreen = TOUCHSCREEN_UNDEFINED; keyboard = KEYBOARD_UNDEFINED; keyboardHidden = KEYBOARDHIDDEN_UNDEFINED; hardKeyboardHidden = HARDKEYBOARDHIDDEN_UNDEFINED; navigation = NAVIGATION_UNDEFINED; navigationHidden = NAVIGATIONHIDDEN_UNDEFINED; orientation = ORIENTATION_UNDEFINED; screenLayout = SCREENLAYOUT_UNDEFINED; colorMode = COLOR_MODE_UNDEFINED; uiMode = UI_MODE_TYPE_UNDEFINED; screenWidthDp = compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED; screenHeightDp = compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED; smallestScreenWidthDp = compatSmallestScreenWidthDp = SMALLEST_SCREEN_WIDTH_DP_UNDEFINED; densityDpi = DENSITY_DPI_UNDEFINED; assetsSeq = ASSETS_SEQ_UNDEFINED; seq = 0; windowConfiguration.setToDefaults(); }
所以autosize不生效,可以看下是不是这个方法改变的,举一反三。
另外使用generateLayoutParams也可以生效,就是改动地方太多,不考虑。
generateLayoutParams
@Override public LayoutParams generateLayoutParams(AttributeSet attrs) { AutoSizeCompat.autoConvertDensityOfGlobal((getResources());//如果没有自定义需求用这个方法 AutoSizeCompat.autoConvertDensity((getResources(), 667, false);//如果有自定义需求就用这个方法 return super.generateLayoutParams(attrs); }
日志
原本只是以为有地方给density重新赋值了,于是全局搜索给density赋值的地方,结果没有发现。 无意间看到baseactivity重写了getResource方法,发现这段代码也可以density重新赋值。凌乱...
所以autosize不生效,可以看下是不是这个方法改变的,举一反三。
另外使用
generateLayoutParams
也可以生效,就是改动地方太多,不考虑。