Merge "Modify image attachments previews to conform to UX specs" into jb-ub-mail-ur8
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 7f2c9f1..b615b17 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -80,4 +80,5 @@
<color name="letter_tile_color">#d8d8d8</color>
<color name="letter_tile_font_color">#ffffff</color>
+ <color name="tile_divider_color">#ffffff</color>
</resources>
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index 76a6f65..1429704 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -112,13 +112,8 @@
<dimen name="senders_textview_top_padding">-4dp</dimen>
<dimen name="senders_textview_height">30dp</dimen>
<integer name="chips_max_lines">2</integer>
- <dimen name="tile_letter_font_size">24sp</dimen>
- <dimen name="tile_letter_font_size_med">18sp</dimen>
- <dimen name="tile_letter_font_size_small">12sp</dimen>
- <dimen name="tile_letter_padding_bottom">15dp</dimen>
- <dimen name="tile_letter_padding_left">16dp</dimen>
- <dimen name="tile_letter_padding_bottom_half">18dp</dimen>
- <dimen name="tile_letter_padding_left_half">7dp</dimen>
- <dimen name="tile_letter_padding_bottom_quarter">8dp</dimen>
- <dimen name="tile_letter_padding_left_quarter">8dp</dimen>
+ <dimen name="tile_letter_font_size">33dp</dimen>
+ <dimen name="tile_letter_font_size_med">16dp</dimen>
+ <dimen name="tile_letter_font_size_small">16dp</dimen>
+ <dimen name="tile_divider_width">1dp</dimen>
</resources>
diff --git a/src/com/android/mail/photomanager/LetterTileProvider.java b/src/com/android/mail/photomanager/LetterTileProvider.java
index e939222..ab40234 100644
--- a/src/com/android/mail/photomanager/LetterTileProvider.java
+++ b/src/com/android/mail/photomanager/LetterTileProvider.java
@@ -25,6 +25,8 @@
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
+import android.graphics.Paint.Align;
+import android.graphics.Rect;
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.TextUtils;
@@ -47,15 +49,10 @@
public class LetterTileProvider extends DefaultImageProvider {
private Bitmap mDefaultBitmap;
private final LruCache<Integer, Bitmap> mTileBitmapCache;
- private static int sTilePaddingLeftHalf;
- private static int sTilePaddingBottomHalf;
- private static int sTilePaddingLeftQuarter;
- private static int sTilePaddingBottomQuarter;
- private static int sTilePaddingBottom;
- private static int sTilePaddingLeft;
+ private static Typeface sSansSerifLight;
+ private static Rect sBounds;
private static int sTileLetterFontSize = -1;
private static int sTileLetterFontSizeSmall;
- private static int sTileLetterFontSizeMed;
private static int sTileColor;
private static int sTileFontColor;
private static TextPaint sPaint = new TextPaint();
@@ -90,31 +87,22 @@
if (sTileLetterFontSize == -1) {
final Resources res = view.getContext().getResources();
sTileLetterFontSize = res.getDimensionPixelSize(R.dimen.tile_letter_font_size);
- sTileLetterFontSizeMed = res
- .getDimensionPixelSize(R.dimen.tile_letter_font_size_med);
sTileLetterFontSizeSmall = res
.getDimensionPixelSize(R.dimen.tile_letter_font_size_small);
- sTilePaddingBottom = res
- .getDimensionPixelSize(R.dimen.tile_letter_padding_bottom);
- sTilePaddingBottomHalf = res
- .getDimensionPixelSize(R.dimen.tile_letter_padding_bottom_half);
- sTilePaddingBottomQuarter = res
- .getDimensionPixelSize(R.dimen.tile_letter_padding_bottom_quarter);
- sTilePaddingLeft = res.getDimensionPixelSize(R.dimen.tile_letter_padding_left);
- sTilePaddingLeftHalf = res
- .getDimensionPixelSize(R.dimen.tile_letter_padding_left_half);
- sTilePaddingLeftQuarter = res
- .getDimensionPixelSize(R.dimen.tile_letter_padding_left_quarter);
sTileColor = res.getColor(R.color.letter_tile_color);
sTileFontColor = res.getColor(R.color.letter_tile_font_color);
+ sSansSerifLight = Typeface.create("sans-serif-light", Typeface.NORMAL);
+ sBounds = new Rect();
}
- sPaint.setTextSize(getFontSize(d.scale));
- sPaint.setTypeface(Typeface.DEFAULT);
- sPaint.setColor(sTileFontColor);
Canvas c = new Canvas(bitmap);
c.drawColor(sTileColor);
- c.drawText(first, getLeftPadding(d.scale), d.height - getBottomPadding(d.scale),
- sPaint);
+ sPaint.setTextSize(getFontSize(d.scale));
+ sPaint.setTypeface(sSansSerifLight);
+ sPaint.setColor(sTileFontColor);
+ sPaint.setTextAlign(Align.CENTER);
+ sPaint.setAntiAlias(true);
+ sPaint.getTextBounds(first, 0, first.length(), sBounds);
+ c.drawText(first, 0+d.width/2, 0+d.height/2+(sBounds.bottom-sBounds.top)/2, sPaint);
mTileBitmapCache.put(hash, bitmap);
}
} else {
@@ -132,33 +120,11 @@
private int getFontSize(float scale) {
if (scale == DividedImageCanvas.ONE) {
return sTileLetterFontSize;
- } else if (scale == DividedImageCanvas.HALF) {
- return sTileLetterFontSizeMed;
} else {
return sTileLetterFontSizeSmall;
}
}
- private int getBottomPadding(float scale) {
- if (scale == DividedImageCanvas.ONE) {
- return sTilePaddingBottom;
- } else if (scale == DividedImageCanvas.HALF){
- return sTilePaddingBottomHalf;
- } else {
- return sTilePaddingBottomQuarter;
- }
- }
-
- private int getLeftPadding(float scale) {
- if (scale == DividedImageCanvas.ONE) {
- return sTilePaddingLeft;
- } else if (scale == DividedImageCanvas.HALF){
- return sTilePaddingLeftHalf;
- } else {
- return sTilePaddingLeftQuarter;
- }
- }
-
private boolean isLetter(String letter) {
Matcher m = ALPHABET.matcher(letter);
return m.matches();
diff --git a/src/com/android/mail/ui/DividedImageCanvas.java b/src/com/android/mail/ui/DividedImageCanvas.java
index c46a8dd..9b6e782 100644
--- a/src/com/android/mail/ui/DividedImageCanvas.java
+++ b/src/com/android/mail/ui/DividedImageCanvas.java
@@ -17,12 +17,14 @@
package com.android.mail.ui;
import android.content.Context;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
+import com.android.mail.R;
import com.android.mail.photomanager.BitmapUtil;
import com.google.common.base.Objects;
@@ -51,6 +53,7 @@
private final InvalidateCallback mCallback;
private final ArrayList<Bitmap> mDivisionImages = new ArrayList<Bitmap>(MAX_DIVISIONS);
+
private static final Paint sPaint = new Paint();
private static final Rect sSrc = new Rect();
private static final Rect sDest = new Rect();
@@ -61,9 +64,13 @@
public static final float QUARTER = 0.25f;
+ private static int sDividerLineWidth = -1;
+ private static int sDividerColor;
+
public DividedImageCanvas(Context context, InvalidateCallback callback) {
mContext = context;
mCallback = callback;
+ setupDividerLines();
}
/**
@@ -225,11 +232,14 @@
break;
}
complete = mDivisionImages.get(0) != null && mDivisionImages.get(1) != null;
+ if (complete) {
+ // Draw dividers
+ drawVerticalDivider(width, height);
+ }
break;
case 3:
// Draw 3 bitmaps: the first takes up all vertical
- // space,
- // the 2nd and 3rd are stacked in the second vertical
+ // space, the 2nd and 3rd are stacked in the second vertical
// position.
switch (pos) {
case 0:
@@ -245,6 +255,11 @@
}
complete = mDivisionImages.get(0) != null && mDivisionImages.get(1) != null
&& mDivisionImages.get(2) != null;
+ if (complete) {
+ // Draw dividers
+ drawVerticalDivider(width, height);
+ drawHorizontalDivider(width / 2, height / 2, width, height / 2);
+ }
break;
default:
// Draw all 4 bitmaps in a grid
@@ -265,6 +280,11 @@
}
complete = mDivisionImages.get(0) != null && mDivisionImages.get(1) != null
&& mDivisionImages.get(2) != null && mDivisionImages.get(3) != null;
+ if (complete) {
+ // Draw dividers
+ drawVerticalDivider(width, height);
+ drawHorizontalDivider(0, height / 2, width, height / 2);
+ }
break;
}
// Create the new image bitmap.
@@ -274,6 +294,31 @@
}
}
+ private void setupDividerLines() {
+ if (sDividerLineWidth == -1) {
+ Resources res = getContext().getResources();
+ sDividerLineWidth = res
+ .getDimensionPixelSize(R.dimen.tile_divider_width);
+ sDividerColor = res.getColor(R.color.tile_divider_color);
+ }
+ }
+
+ private void setupPaint() {
+ sPaint.setStrokeWidth(sDividerLineWidth);
+ sPaint.setColor(sDividerColor);
+ }
+
+ private void drawVerticalDivider(int width, int height) {
+ int x1 = width / 2, y1 = 0, x2 = width/2, y2 = height;
+ setupPaint();
+ mCanvas.drawLine(x1, y1, x2, y2, sPaint);
+ }
+
+ private void drawHorizontalDivider(int x1, int y1, int x2, int y2) {
+ setupPaint();
+ mCanvas.drawLine(x1, y1, x2, y2, sPaint);
+ }
+
/**
* Draw the contents of the DividedImageCanvas to the supplied canvas.
*/