summaryrefslogtreecommitdiff
path: root/java/com/android/contacts
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/contacts')
-rw-r--r--java/com/android/contacts/common/lettertiles/LetterTileDrawable.java83
1 files changed, 26 insertions, 57 deletions
diff --git a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java b/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
index 5b7dcbe84..5c401fe38 100644
--- a/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
+++ b/java/com/android/contacts/common/lettertiles/LetterTileDrawable.java
@@ -87,23 +87,23 @@ public class LetterTileDrawable extends Drawable {
/** Default icon scale for vector drawable. */
private static final float VECTOR_ICON_SCALE = 0.7f;
- private static Paint sPaint;
+ /** Reusable components to avoid new allocations */
+ private static final Paint sPaint = new Paint();
private static final Rect sRect = new Rect();
private static final char[] sFirstChar = new char[1];
-
- private static volatile Integer sSpamColor;
- private static volatile Integer sDefaultColor;
- private static volatile Integer sTileFontColor;
- private static volatile Float sLetterToTileRatio;
-
- private static volatile TypedArray sColors;
-
- private static volatile Drawable sDefaultPersonAvatar;
- private static volatile Drawable sDefaultBusinessAvatar;
- private static volatile Drawable sDefaultVoicemailAvatar;
- private static volatile Drawable sDefaultSpamAvatar;
- private static volatile Drawable sDefaultConferenceAvatar;
+ /** Letter tile */
+ private static TypedArray sColors;
+
+ private static int sSpamColor;
+ private static int sDefaultColor;
+ private static int sTileFontColor;
+ private static float sLetterToTileRatio;
+ private static Drawable sDefaultPersonAvatar;
+ private static Drawable sDefaultBusinessAvatar;
+ private static Drawable sDefaultVoicemailAvatar;
+ private static Drawable sDefaultSpamAvatar;
+ private static Drawable sDefaultConferenceAvatar;
private final Paint mPaint;
@ContactType private int mContactType = TYPE_DEFAULT;
@@ -117,66 +117,35 @@ public class LetterTileDrawable extends Drawable {
private String mDisplayName;
public LetterTileDrawable(final Resources res) {
- // Guard static members with null checks to insulate against concurrent calls to the
- // constructor.
- if (sSpamColor == null) {
+ if (sColors == null) {
+ sColors = res.obtainTypedArray(R.array.letter_tile_colors);
sSpamColor = res.getColor(R.color.spam_contact_background);
- }
- if (sDefaultColor == null) {
sDefaultColor = res.getColor(R.color.letter_tile_default_color);
- }
- if (sTileFontColor == null) {
sTileFontColor = res.getColor(R.color.letter_tile_font_color);
- }
- if (sTileFontColor == null) {
sLetterToTileRatio = res.getFraction(R.dimen.letter_to_tile_ratio, 1, 1);
- }
-
- if (sColors == null) {
- sColors = res.obtainTypedArray(R.array.letter_tile_colors);
- }
- if (sDefaultPersonAvatar == null) {
sDefaultPersonAvatar =
res.getDrawable(R.drawable.product_logo_avatar_anonymous_white_color_120, null);
- }
- if (sDefaultBusinessAvatar == null) {
+ Assert.isNotNull(sDefaultPersonAvatar, "sDefaultPersonAvatar is null");
sDefaultBusinessAvatar = res.getDrawable(R.drawable.quantum_ic_business_vd_theme_24, null);
- }
- if (sDefaultVoicemailAvatar == null) {
+ Assert.isNotNull(sDefaultBusinessAvatar, "sDefaultBusinessAvatar is null");
sDefaultVoicemailAvatar = res.getDrawable(R.drawable.quantum_ic_voicemail_vd_theme_24, null);
- }
- if (sDefaultSpamAvatar == null) {
+ Assert.isNotNull(sDefaultVoicemailAvatar, "sDefaultVoicemailAvatar is null");
sDefaultSpamAvatar = res.getDrawable(R.drawable.quantum_ic_report_vd_theme_24, null);
- }
- if (sDefaultConferenceAvatar == null) {
+ Assert.isNotNull(sDefaultSpamAvatar, "sDefaultSpamAvatar is null");
sDefaultConferenceAvatar = res.getDrawable(R.drawable.quantum_ic_group_vd_theme_24, null);
- }
-
- // Calls in this method are potentially not idempotent, and need to be set after
- // the member is initilaized.
- this.initializeDefaultPaintOptions(res);
+ Assert.isNotNull(sDefaultConferenceAvatar, "sDefaultConferenceAvatar is null");
- // These values should be reset on every call to the constructor.
+ sPaint.setTypeface(
+ Typeface.create(res.getString(R.string.letter_tile_letter_font_family), Typeface.NORMAL));
+ sPaint.setTextAlign(Align.CENTER);
+ sPaint.setAntiAlias(true);
+ }
mPaint = new Paint();
mPaint.setFilterBitmap(true);
mPaint.setDither(true);
-
mColor = sDefaultColor;
}
- private static void initializeDefaultPaintOptions(final Resources res) {
- if (sPaint == null) {
- synchronized (LetterTileDrawable.class) {
- sPaint = new Paint();
- sPaint.setTypeface(
- Typeface.create(
- res.getString(R.string.letter_tile_letter_font_family), Typeface.NORMAL));
- sPaint.setTextAlign(Align.CENTER);
- sPaint.setAntiAlias(true);
- }
- }
- }
-
private Rect getScaledBounds(float scale, float offset) {
// The drawable should be drawn in the middle of the canvas without changing its width to
// height ratio.