summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJin Cao <jinyan@google.com>2014-08-08 12:28:17 -0700
committerJin Cao <jinyan@google.com>2014-08-08 13:13:06 -0700
commit809c595762c1d5adfe93d61eafa5fc9aa48c7de3 (patch)
tree892d808684967c658a0ae230b4166fc69964753e
parent9a47bdb4d4cc3123cd0074cded936a8a6984595d (diff)
downloadandroid_frameworks_opt_chips-809c595762c1d5adfe93d61eafa5fc9aa48c7de3.tar.gz
android_frameworks_opt_chips-809c595762c1d5adfe93d61eafa5fc9aa48c7de3.tar.bz2
android_frameworks_opt_chips-809c595762c1d5adfe93d61eafa5fc9aa48c7de3.zip
Don't use textpaint for drawing icons
When drawing icons we set various shaders and attributes to convert sq icon to circle. These attributes are applied directly on the TextPaint and are never reset. As a result, we see tiny fonts. b/16700424 Change-Id: I9ffd07d64fa5c3dee6a5b312195e54559a73413d
-rw-r--r--src/com/android/ex/chips/RecipientEditTextView.java46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java
index aa330bd..cda8f58 100644
--- a/src/com/android/ex/chips/RecipientEditTextView.java
+++ b/src/com/android/ex/chips/RecipientEditTextView.java
@@ -171,6 +171,8 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
private static final int IMAGE_SPAN_ALIGNMENT_BASELINE = 1;
+ private Paint mWorkPaint = new Paint();
+
private boolean mDisableDelete;
private Tokenizer mTokenizer;
@@ -643,7 +645,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
mChipBackgroundPressed, getResources().getColor(R.color.chip_background_selected));
if (bitmapContainer.loadIcon) {
- loadAvatarIcon(contact, bitmapContainer, paint);
+ loadAvatarIcon(contact, bitmapContainer);
}
return bitmapContainer.bitmap;
@@ -661,7 +663,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
getChipBackground(contact), getDefaultChipBackgroundColor(contact));
if (bitmapContainer.loadIcon) {
- loadAvatarIcon(contact, bitmapContainer, paint);
+ loadAvatarIcon(contact, bitmapContainer);
}
return bitmapContainer.bitmap;
}
@@ -735,12 +737,12 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
/**
* Helper function that draws the loaded icon bitmap into the chips bitmap
*/
- private void drawIcon(ChipBitmapContainer bitMapResult, Bitmap icon, Paint paint) {
+ private void drawIcon(ChipBitmapContainer bitMapResult, Bitmap icon) {
final Canvas canvas = new Canvas(bitMapResult.bitmap);
final RectF src = new RectF(0, 0, icon.getWidth(), icon.getHeight());
final RectF dst = new RectF(bitMapResult.left, bitMapResult.top, bitMapResult.right,
bitMapResult.bottom);
- drawIconOnCanvas(icon, canvas, paint, src, dst);
+ drawIconOnCanvas(icon, canvas, src, dst);
}
/**
@@ -761,7 +763,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
* draw an icon for this recipient.
*/
private void loadAvatarIcon(final RecipientEntry contact,
- final ChipBitmapContainer bitmapContainer, final Paint paint) {
+ final ChipBitmapContainer bitmapContainer) {
// Don't draw photos for recipients that have been typed in OR generated on the fly.
long contactId = contact.getContactId();
boolean drawPhotos = isPhoneQuery() ?
@@ -798,7 +800,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
}
private void tryDrawAndInvalidate(Bitmap icon) {
- drawIcon(bitmapContainer, icon, paint);
+ drawIcon(bitmapContainer, icon);
// The caller might originated from a background task. However, if the
// background task has already completed, the view might be already drawn
// on the UI but the callback would happen on the background thread.
@@ -819,7 +821,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
} else {
final Bitmap icon = BitmapFactory.decodeByteArray(origPhotoBytes, 0,
origPhotoBytes.length);
- drawIcon(bitmapContainer, icon, paint);
+ drawIcon(bitmapContainer, icon);
}
}
}
@@ -848,7 +850,7 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
* Draws the icon onto the canvas given the source rectangle of the bitmap and the destination
* rectangle of the canvas.
*/
- protected void drawIconOnCanvas(Bitmap icon, Canvas canvas, Paint paint, RectF src, RectF dst) {
+ protected void drawIconOnCanvas(Bitmap icon, Canvas canvas, RectF src, RectF dst) {
final Matrix matrix = new Matrix();
// Draw bitmap through shader first.
@@ -859,23 +861,23 @@ public class RecipientEditTextView extends MultiAutoCompleteTextView implements
matrix.setRectToRect(src, dst, Matrix.ScaleToFit.FILL);
shader.setLocalMatrix(matrix);
- paint.reset();
- paint.setShader(shader);
- paint.setAntiAlias(true);
- paint.setFilterBitmap(true);
- paint.setDither(true);
- canvas.drawCircle(dst.centerX(), dst.centerY(), dst.width() / 2f, paint);
+ mWorkPaint.reset();
+ mWorkPaint.setShader(shader);
+ mWorkPaint.setAntiAlias(true);
+ mWorkPaint.setFilterBitmap(true);
+ mWorkPaint.setDither(true);
+ canvas.drawCircle(dst.centerX(), dst.centerY(), dst.width() / 2f, mWorkPaint);
// Then draw the border.
final float borderWidth = 1f;
- paint.reset();
- paint.setColor(Color.TRANSPARENT);
- paint.setStyle(Style.STROKE);
- paint.setStrokeWidth(borderWidth);
- paint.setAntiAlias(true);
- canvas.drawCircle(dst.centerX(), dst.centerY(), dst.width() / 2f - borderWidth / 2, paint);
-
- paint.reset();
+ mWorkPaint.reset();
+ mWorkPaint.setColor(Color.TRANSPARENT);
+ mWorkPaint.setStyle(Style.STROKE);
+ mWorkPaint.setStrokeWidth(borderWidth);
+ mWorkPaint.setAntiAlias(true);
+ canvas.drawCircle(dst.centerX(), dst.centerY(), dst.width() / 2f - borderWidth / 2, mWorkPaint);
+
+ mWorkPaint.reset();
}
private DrawableRecipientChip constructChipSpan(RecipientEntry contact, boolean pressed) {