@@ -148,9 +148,13 @@ public static void autoConvertDensityBaseOnHeight(Activity activity, float desig
148148 public static void autoConvertDensity (Activity activity , float sizeInDp , boolean isBaseOnWidth ) {
149149 Preconditions .checkNotNull (activity , "activity == null" );
150150
151+ float subunitsDesignSize = isBaseOnWidth ? AutoSizeConfig .getInstance ().getUnitsManager ().getDesignWidth ()
152+ : AutoSizeConfig .getInstance ().getUnitsManager ().getDesignHeight ();
153+ subunitsDesignSize = subunitsDesignSize > 0 ? subunitsDesignSize : sizeInDp ;
154+
151155 int screenSize = isBaseOnWidth ? AutoSizeConfig .getInstance ().getScreenWidth ()
152156 : AutoSizeConfig .getInstance ().getScreenHeight ();
153- String key = sizeInDp + "|" + isBaseOnWidth + "|"
157+ String key = sizeInDp + "|" + subunitsDesignSize + "|" + isBaseOnWidth + "|"
154158 + AutoSizeConfig .getInstance ().isUseDeviceSize () + "|"
155159 + AutoSizeConfig .getInstance ().getInitScaledDensity () + "|"
156160 + screenSize ;
@@ -173,9 +177,9 @@ public static void autoConvertDensity(Activity activity, float sizeInDp, boolean
173177 targetDensityDpi = (int ) (targetDensity * 160 );
174178
175179 if (isBaseOnWidth ) {
176- targetXdpi = AutoSizeConfig .getInstance ().getScreenWidth () * 1.0f / sizeInDp ;
180+ targetXdpi = AutoSizeConfig .getInstance ().getScreenWidth () * 1.0f / subunitsDesignSize ;
177181 } else {
178- targetXdpi = AutoSizeConfig .getInstance ().getScreenHeight () * 1.0f / sizeInDp ;
182+ targetXdpi = AutoSizeConfig .getInstance ().getScreenHeight () * 1.0f / subunitsDesignSize ;
179183 }
180184
181185 mCache .put (key , new DisplayMetricsInfo (targetDensity , targetDensityDpi , targetScaledDensity , targetXdpi ));
@@ -188,9 +192,10 @@ public static void autoConvertDensity(Activity activity, float sizeInDp, boolean
188192
189193 setDensity (activity , targetDensity , targetDensityDpi , targetScaledDensity , targetXdpi );
190194
191- LogUtils .d (String .format (Locale .ENGLISH , "The %s has been adapted! \n %s Info: isBaseOnWidth = %s, %s = %f, targetDensity = %f, targetScaledDensity = %f, targetDensityDpi = %d, targetXdpi = %f"
195+ LogUtils .d (String .format (Locale .ENGLISH , "The %s has been adapted! \n %s Info: isBaseOnWidth = %s, %s = %f, %s = %f, targetDensity = %f, targetScaledDensity = %f, targetDensityDpi = %d, targetXdpi = %f"
192196 , activity .getClass ().getName (), activity .getClass ().getSimpleName (), isBaseOnWidth , isBaseOnWidth ? "designWidthInDp"
193- : "designHeightInDp" , sizeInDp , targetDensity , targetScaledDensity , targetDensityDpi , targetXdpi ));
197+ : "designHeightInDp" , sizeInDp , isBaseOnWidth ? "designWidthInSubunits" : "designHeightInSubunits" , subunitsDesignSize
198+ , targetDensity , targetScaledDensity , targetDensityDpi , targetXdpi ));
194199 }
195200
196201 /**
0 commit comments