aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-03-16 16:41:18 +0900
committerTadashi G. Takaoka <takaoka@google.com>2012-03-21 20:29:51 +0900
commit72913f97edb74e877f78b25418a568a4b0f5ae5c (patch)
tree09df79e7be55dae829138707943fd2d097782636 /java/src
parent9945f364061dc0b297da0e13a7e864ac6890bb4c (diff)
downloadlatinime-72913f97edb74e877f78b25418a568a4b0f5ae5c.tar.gz
latinime-72913f97edb74e877f78b25418a568a4b0f5ae5c.tar.xz
latinime-72913f97edb74e877f78b25418a568a4b0f5ae5c.zip
Refactor key drawing code in KeyboardView
Change-Id: Ic7af05caee32eb6cba68d27ba4e2d9072472b34d
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java37
-rw-r--r--java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java11
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java11
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java8
-rw-r--r--java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java1
5 files changed, 31 insertions, 37 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 847174c0a..24eb7592b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -99,7 +99,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Main keyboard
private Keyboard mKeyboard;
- private final KeyDrawParams mKeyDrawParams;
+ protected final KeyDrawParams mKeyDrawParams;
// Key preview
private final int mKeyPreviewLayoutId;
@@ -171,7 +171,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- /* package */ static class KeyDrawParams {
+ protected static class KeyDrawParams {
// XML attributes
public final int mKeyTextColor;
public final int mKeyTextInactivatedColor;
@@ -351,7 +351,6 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
mDelayAfterPreview = mKeyPreviewDrawParams.mLingerTimeout;
mPaint.setAntiAlias(true);
- mPaint.setTextAlign(Align.CENTER);
}
// Read fraction value in TypedArray as float.
@@ -729,10 +728,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- private static int getCharGeometryCacheKey(char reference, Paint paint) {
+ private static int getCharGeometryCacheKey(char referenceChar, Paint paint) {
final int labelSize = (int)paint.getTextSize();
final Typeface face = paint.getTypeface();
- final int codePointOffset = reference << 15;
+ final int codePointOffset = referenceChar << 15;
if (face == Typeface.DEFAULT) {
return codePointOffset + labelSize;
} else if (face == Typeface.DEFAULT_BOLD) {
@@ -747,41 +746,35 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Working variable for the following methods.
private final Rect mTextBounds = new Rect();
- private float getCharHeight(char[] character, Paint paint) {
- final Integer key = getCharGeometryCacheKey(character[0], paint);
+ private float getCharHeight(char[] referenceChar, Paint paint) {
+ final Integer key = getCharGeometryCacheKey(referenceChar[0], paint);
final Float cachedValue = sTextHeightCache.get(key);
if (cachedValue != null)
return cachedValue;
- paint.getTextBounds(character, 0, 1, mTextBounds);
+ paint.getTextBounds(referenceChar, 0, 1, mTextBounds);
final float height = mTextBounds.height();
sTextHeightCache.put(key, height);
return height;
}
- private float getCharWidth(char[] character, Paint paint) {
- final Integer key = getCharGeometryCacheKey(character[0], paint);
+ private float getCharWidth(char[] referenceChar, Paint paint) {
+ final Integer key = getCharGeometryCacheKey(referenceChar[0], paint);
final Float cachedValue = sTextWidthCache.get(key);
if (cachedValue != null)
return cachedValue;
- paint.getTextBounds(character, 0, 1, mTextBounds);
+ paint.getTextBounds(referenceChar, 0, 1, mTextBounds);
final float width = mTextBounds.width();
sTextWidthCache.put(key, width);
return width;
}
- protected float getLabelWidth(CharSequence label, Paint paint) {
+ public float getLabelWidth(String label, Paint paint) {
paint.getTextBounds(label.toString(), 0, label.length(), mTextBounds);
return mTextBounds.width();
}
- public float getDefaultLabelWidth(String label, Paint paint) {
- paint.setTextSize(mKeyDrawParams.mKeyLabelSize);
- paint.setTypeface(mKeyDrawParams.mKeyTextStyle);
- return getLabelWidth(label, paint);
- }
-
protected static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width,
int height) {
canvas.translate(x, y);
@@ -815,6 +808,14 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
canvas.translate(-x, -y);
}
+ public Paint newDefaultLabelPaint() {
+ final Paint paint = new Paint();
+ paint.setAntiAlias(true);
+ paint.setTypeface(mKeyDrawParams.mKeyTextStyle);
+ paint.setTextSize(mKeyDrawParams.mKeyLabelSize);
+ return paint;
+ }
+
public void cancelAllMessages() {
mDrawingHandler.cancelAllMessages();
}
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
index 904a81de4..72a5d0f05 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboard.java
@@ -296,17 +296,16 @@ public class MoreKeysKeyboard extends Keyboard {
final int padding = (int)(view.getResources()
.getDimension(R.dimen.more_keys_keyboard_key_horizontal_padding)
+ (parentKey.hasLabelsInMoreKeys() ? minKeyWidth * LABEL_PADDING_RATIO : 0));
- Paint paint = null;
+ final Paint paint = view.newDefaultLabelPaint();
+ paint.setTextSize(parentKey.hasLabelsInMoreKeys()
+ ? view.mKeyDrawParams.mKeyLabelSize
+ : view.mKeyDrawParams.mKeyLetterSize);
int maxWidth = minKeyWidth;
for (String moreKeySpec : parentKey.mMoreKeys) {
final String label = KeySpecParser.getLabel(moreKeySpec);
// If the label is single letter, minKeyWidth is enough to hold the label.
if (label != null && StringUtils.codePointCount(label) > 1) {
- if (paint == null) {
- paint = new Paint();
- paint.setAntiAlias(true);
- }
- final int width = (int)view.getDefaultLabelWidth(label, paint) + padding;
+ final int width = (int)view.getLabelWidth(label, paint) + padding;
if (maxWidth < width) {
maxWidth = width;
}
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
index c9c88fd23..dd83a0c4e 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java
@@ -23,9 +23,7 @@ import android.graphics.drawable.Drawable;
import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
-import com.android.inputmethod.keyboard.KeyboardView;
import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
-import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SuggestedWords;
import com.android.inputmethod.latin.Utils;
@@ -38,8 +36,6 @@ public class MoreSuggestions extends Keyboard {
}
public static class Builder extends Keyboard.Builder<Builder.MoreSuggestionsParam> {
- private static final boolean DBG = LatinImeLogger.sDBG;
-
private final MoreSuggestionsView mPaneView;
private SuggestedWords mSuggestions;
private int mFromPos;
@@ -56,10 +52,8 @@ public class MoreSuggestions extends Keyboard {
public int mDividerWidth;
public int layout(SuggestedWords suggestions, int fromPos, int maxWidth, int minWidth,
- int maxRow, KeyboardView view) {
+ int maxRow, MoreSuggestionsView view) {
clearKeys();
- final Paint paint = new Paint();
- paint.setAntiAlias(true);
final Resources res = view.getContext().getResources();
mDivider = res.getDrawable(R.drawable.more_suggestions_divider);
// TODO: Drawable itself should have an alpha value.
@@ -67,6 +61,7 @@ public class MoreSuggestions extends Keyboard {
mDividerWidth = mDivider.getIntrinsicWidth();
final int padding = (int) res.getDimension(
R.dimen.more_suggestions_key_horizontal_padding);
+ final Paint paint = view.newDefaultLabelPaint();
int row = 0;
int pos = fromPos, rowStartPos = fromPos;
@@ -74,7 +69,7 @@ public class MoreSuggestions extends Keyboard {
while (pos < size) {
final String word = suggestions.getWord(pos).toString();
// TODO: Should take care of text x-scaling.
- mWidths[pos] = (int)view.getDefaultLabelWidth(word, paint) + padding;
+ mWidths[pos] = (int)view.getLabelWidth(word, paint) + padding;
final int numColumn = pos - rowStartPos + 1;
final int columnWidth =
(maxWidth - mDividerWidth * (numColumn - 1)) / numColumn;
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index f11b1a4c1..e64e7a685 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -43,17 +43,17 @@ import com.android.inputmethod.latin.R;
public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
private final int[] mCoordinates = new int[2];
- private final KeyDetector mModalPanelKeyDetector;
+ final KeyDetector mModalPanelKeyDetector;
private final KeyDetector mSlidingPanelKeyDetector;
private Controller mController;
- private KeyboardActionListener mListener;
+ KeyboardActionListener mListener;
private int mOriginX;
private int mOriginY;
- private static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy.Adapter();
+ static final TimerProxy EMPTY_TIMER_PROXY = new TimerProxy.Adapter();
- private final KeyboardActionListener mSuggestionsPaneListener =
+ final KeyboardActionListener mSuggestionsPaneListener =
new KeyboardActionListener.Adapter() {
@Override
public void onPressKey(int primaryCode) {
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
index d3c3afb73..f6c1b163c 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
@@ -62,7 +62,6 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.StaticInnerHandlerWrapper;
import com.android.inputmethod.latin.Suggest;
import com.android.inputmethod.latin.SuggestedWords;
-import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import com.android.inputmethod.latin.Utils;
import java.util.ArrayList;