Skip to content

Commit b27429b

Browse files
committed
Improve AutoSize#autoConvertDensity
1 parent 11415f9 commit b27429b

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

autosize/src/main/java/me/jessyan/autosize/AutoSize.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)