Merge changes Ic3e704c4,I8da1d3f9 into sc-v2-dev
* changes: Double-bold the snooze option text. Bold StyleSpan further for auto-bold
This commit is contained in:
committed by
Android (Google) Code Review
commit
7c18413e34
@@ -17,8 +17,10 @@
|
||||
package android.text.style;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.fonts.FontStyle;
|
||||
import android.os.Parcel;
|
||||
import android.text.ParcelableSpan;
|
||||
import android.text.TextPaint;
|
||||
@@ -45,6 +47,7 @@ import android.text.TextUtils;
|
||||
public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
|
||||
|
||||
private final int mStyle;
|
||||
private final int mFontWeightAdjustment;
|
||||
|
||||
/**
|
||||
* Creates a {@link StyleSpan} from a style.
|
||||
@@ -54,7 +57,24 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
|
||||
* in {@link Typeface}.
|
||||
*/
|
||||
public StyleSpan(int style) {
|
||||
this(style, Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link StyleSpan} from a style and font weight adjustment.
|
||||
*
|
||||
* @param style An integer constant describing the style for this span. Examples
|
||||
* include bold, italic, and normal. Values are constants defined
|
||||
* in {@link Typeface}.
|
||||
* @param fontWeightAdjustment An integer describing the adjustment to be made to the font
|
||||
* weight.
|
||||
* @see Configuration#fontWeightAdjustment This is the adjustment in text font weight
|
||||
* that is used to reflect the current user's preference for increasing font weight.
|
||||
* @hide
|
||||
*/
|
||||
public StyleSpan(@Typeface.Style int style, int fontWeightAdjustment) {
|
||||
mStyle = style;
|
||||
mFontWeightAdjustment = fontWeightAdjustment;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,6 +84,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
|
||||
*/
|
||||
public StyleSpan(@NonNull Parcel src) {
|
||||
mStyle = src.readInt();
|
||||
mFontWeightAdjustment = src.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -91,6 +112,7 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
|
||||
@Override
|
||||
public void writeToParcelInternal(@NonNull Parcel dest, int flags) {
|
||||
dest.writeInt(mStyle);
|
||||
dest.writeInt(mFontWeightAdjustment);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,17 +122,25 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
|
||||
return mStyle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the font weight adjustment specified by this span.
|
||||
* @hide
|
||||
*/
|
||||
public int getFontWeightAdjustment() {
|
||||
return mFontWeightAdjustment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDrawState(TextPaint ds) {
|
||||
apply(ds, mStyle);
|
||||
apply(ds, mStyle, mFontWeightAdjustment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMeasureState(TextPaint paint) {
|
||||
apply(paint, mStyle);
|
||||
apply(paint, mStyle, mFontWeightAdjustment);
|
||||
}
|
||||
|
||||
private static void apply(Paint paint, int style) {
|
||||
private static void apply(Paint paint, int style, int fontWeightAdjustment) {
|
||||
int oldStyle;
|
||||
|
||||
Typeface old = paint.getTypeface();
|
||||
@@ -129,6 +159,18 @@ public class StyleSpan extends MetricAffectingSpan implements ParcelableSpan {
|
||||
tf = Typeface.create(old, want);
|
||||
}
|
||||
|
||||
// Base typeface may already be bolded by auto bold. Bold further.
|
||||
if ((style & Typeface.BOLD) != 0) {
|
||||
if (fontWeightAdjustment != 0
|
||||
&& fontWeightAdjustment != Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED) {
|
||||
int newWeight = Math.min(
|
||||
Math.max(tf.getWeight() + fontWeightAdjustment, FontStyle.FONT_WEIGHT_MIN),
|
||||
FontStyle.FONT_WEIGHT_MAX);
|
||||
boolean italic = (want & Typeface.ITALIC) != 0;
|
||||
tf = Typeface.create(tf, newWeight, italic);
|
||||
}
|
||||
}
|
||||
|
||||
int fake = want & ~tf.getStyle();
|
||||
|
||||
if ((fake & Typeface.BOLD) != 0) {
|
||||
|
||||
@@ -255,7 +255,7 @@ public class NotificationSnooze extends LinearLayout
|
||||
return new NotificationSnoozeOption(null, minutes, description, resultText, action);
|
||||
}
|
||||
SpannableString string = new SpannableString(resultText);
|
||||
string.setSpan(new StyleSpan(Typeface.BOLD),
|
||||
string.setSpan(new StyleSpan(Typeface.BOLD, res.getConfiguration().fontWeightAdjustment),
|
||||
index, index + description.length(), 0 /* flags */);
|
||||
return new NotificationSnoozeOption(null, minutes, description, string,
|
||||
action);
|
||||
|
||||
Reference in New Issue
Block a user