Skip to content

Commit

Permalink
新增: 添加 APP 内字体大小的放大比例, 区别于系统字体大小的放大比例, 可以全局调节 APP 内字体的大小
Browse files Browse the repository at this point in the history
  • Loading branch information
JessYanCoding committed Jan 20, 2020
1 parent bee6475 commit 4fefc9c
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 6 deletions.
10 changes: 7 additions & 3 deletions autosize/src/main/java/me/jessyan/autosize/AutoSize.java
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,13 @@ public static void autoConvertDensity(Activity activity, float sizeInDp, boolean
} else {
targetDensity = AutoSizeConfig.getInstance().getScreenHeight() * 1.0f / sizeInDp;
}
float scale = AutoSizeConfig.getInstance().isExcludeFontScale() ? 1 : AutoSizeConfig.getInstance().
getInitScaledDensity() * 1.0f / AutoSizeConfig.getInstance().getInitDensity();
targetScaledDensity = targetDensity * scale;
if (AutoSizeConfig.getInstance().getPrivateFontScale() > 0) {
targetScaledDensity = targetDensity * AutoSizeConfig.getInstance().getPrivateFontScale();
} else {
float systemFontScale = AutoSizeConfig.getInstance().isExcludeFontScale() ? 1 : AutoSizeConfig.getInstance().
getInitScaledDensity() * 1.0f / AutoSizeConfig.getInstance().getInitDensity();
targetScaledDensity = targetDensity * systemFontScale;
}
targetDensityDpi = (int) (targetDensity * 160);

targetScreenWidthDp = (int) (AutoSizeConfig.getInstance().getScreenWidth() / targetDensity);
Expand Down
10 changes: 7 additions & 3 deletions autosize/src/main/java/me/jessyan/autosize/AutoSizeCompat.java
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,13 @@ public static void autoConvertDensity(Resources resources, float sizeInDp, boole
} else {
targetDensity = AutoSizeConfig.getInstance().getScreenHeight() * 1.0f / sizeInDp;
}
float scale = AutoSizeConfig.getInstance().isExcludeFontScale() ? 1 : AutoSizeConfig.getInstance().
getInitScaledDensity() * 1.0f / AutoSizeConfig.getInstance().getInitDensity();
targetScaledDensity = targetDensity * scale;
if (AutoSizeConfig.getInstance().getPrivateFontScale() > 0) {
targetScaledDensity = targetDensity * AutoSizeConfig.getInstance().getPrivateFontScale();
} else {
float systemFontScale = AutoSizeConfig.getInstance().isExcludeFontScale() ? 1 : AutoSizeConfig.getInstance().
getInitScaledDensity() * 1.0f / AutoSizeConfig.getInstance().getInitDensity();
targetScaledDensity = targetDensity * systemFontScale;
}
targetDensityDpi = (int) (targetDensity * 160);

targetScreenWidthDp = (int) (AutoSizeConfig.getInstance().getScreenWidth() / targetDensity);
Expand Down
26 changes: 26 additions & 0 deletions autosize/src/main/java/me/jessyan/autosize/AutoSizeConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@ public final class AutoSizeConfig {
* 如果为 {@code false}, 则会跟随系统设置中字体大小的改变, 默认为 {@code false}
*/
private boolean isExcludeFontScale;
/**
* 区别于系统字体大小的放大比例, AndroidAutoSize 允许 APP 内部可以独立于系统字体大小之外,独自拥有全局调节 APP 字体大小的能力
* 当然, 在 APP 内您必须使用 sp 来作为字体的单位, 否则此功能无效, 将此值设为 0 则取消此功能
*/
private float privateFontScale;
/**
* 是否是 Miui 系统
*/
Expand Down Expand Up @@ -577,6 +582,27 @@ public AutoSizeConfig setExcludeFontScale(boolean excludeFontScale) {
return this;
}

/**
* 区别于系统字体大小的放大比例, AndroidAutoSize 允许 APP 内部可以独立于系统字体大小之外,独自拥有全局调节 APP 字体大小的能力
* 当然, 在 APP 内您必须使用 sp 来作为字体的单位, 否则此功能无效
*
* @param fontScale 字体大小放大的比例, 设为 0 则取消此功能
*/
public AutoSizeConfig setPrivateFontScale(float fontScale) {
privateFontScale = fontScale;
return this;
}

/**
* 区别于系统字体大小的放大比例, AndroidAutoSize 允许 APP 内部可以独立于系统字体大小之外,独自拥有全局调节 APP 字体大小的能力
* 当然, 在 APP 内您必须使用 sp 来作为字体的单位, 否则此功能无效
*
* @return 私有的字体大小放大比例
*/
public float getPrivateFontScale() {
return privateFontScale;
}

/**
* 设置屏幕宽度
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ public void onCreate() {
//如果为 false, 则会跟随系统设置中字体大小的改变, 默认为 false
// .setExcludeFontScale(true)

//区别于系统字体大小的放大比例, AndroidAutoSize 允许 APP 内部可以独立于系统字体大小之外,独自拥有全局调节 APP 字体大小的能力
//当然, 在 APP 内您必须使用 sp 来作为字体的单位, 否则此功能无效, 不设置或将此值设为 0 则取消此功能
// .setPrivateFontScale(0.8f)

//屏幕适配监听器
.setOnAdaptListener(new onAdaptListener() {
@Override
Expand Down

0 comments on commit 4fefc9c

Please sign in to comment.