aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java20
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java69
-rw-r--r--java/src/com/android/inputmethod/latin/ResourceUtils.java10
3 files changed, 77 insertions, 22 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index aa757f153..a32b3e795 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -124,6 +124,10 @@ public class Keyboard {
/** Per keyboard key visual parameters */
public final Typeface mKeyTypeface;
+ public final float mKeyLetterRatio;
+ public final int mKeyLetterSize;
+ public final float mKeyHintLetterRatio;
+ public final float mKeyShiftedLetterHintRatio;
public final int mMostCommonKeyHeight;
public final int mMostCommonKeyWidth;
@@ -156,6 +160,10 @@ public class Keyboard {
mMaxMoreKeysKeyboardColumn = params.mMaxMoreKeysKeyboardColumn;
mKeyTypeface = params.mKeyTypeface;
+ mKeyLetterRatio = params.mKeyLetterRatio;
+ mKeyLetterSize = params.mKeyLetterSize;
+ mKeyHintLetterRatio = params.mKeyHintLetterRatio;
+ mKeyShiftedLetterHintRatio = params.mKeyShiftedLetterHintRatio;
mTopPadding = params.mTopPadding;
mVerticalGap = params.mVerticalGap;
@@ -253,6 +261,10 @@ public class Keyboard {
public int mHorizontalCenterPadding;
public Typeface mKeyTypeface = null;
+ public float mKeyLetterRatio = ResourceUtils.UNDEFINED_RATIO;
+ public int mKeyLetterSize = ResourceUtils.UNDEFINED_DIMENSION;
+ public float mKeyHintLetterRatio = ResourceUtils.UNDEFINED_RATIO;;
+ public float mKeyShiftedLetterHintRatio = ResourceUtils.UNDEFINED_RATIO;
public int mDefaultRowHeight;
public int mDefaultKeyWidth;
@@ -813,6 +825,14 @@ public class Keyboard {
params.mKeyTypeface = Typeface.defaultFromStyle(keyboardViewAttr.getInt(
R.styleable.KeyboardView_keyTypeface, Typeface.NORMAL));
}
+ params.mKeyLetterRatio = ResourceUtils.getFraction(keyboardViewAttr,
+ R.styleable.KeyboardView_keyLetterSize);
+ params.mKeyLetterSize = ResourceUtils.getDimensionPixelSize(keyboardViewAttr,
+ R.styleable.KeyboardView_keyLetterSize);
+ params.mKeyHintLetterRatio = ResourceUtils.getFraction(keyboardViewAttr,
+ R.styleable.KeyboardView_keyHintLetterRatio);
+ params.mKeyShiftedLetterHintRatio = ResourceUtils.getFraction(keyboardViewAttr,
+ R.styleable.KeyboardView_keyShiftedLetterHintRatio);
params.mMoreKeysTemplate = keyboardAttr.getResourceId(
R.styleable.Keyboard_moreKeysTemplate, 0);
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index d4d4ce76b..6a23c919b 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -85,6 +85,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Miscellaneous constants
private static final int[] LONG_PRESSABLE_STATE_SET = { android.R.attr.state_long_pressable };
+
// XML attributes
protected final float mVerticalCorrection;
protected final int mMoreKeysLayout;
@@ -197,6 +198,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
private final Typeface mKeyTypefaceFromKeyboardView;
private final float mKeyLetterRatio;
+ private final int mKeyLetterSizeFromKeyboardView;
private final float mKeyLargeLetterRatio;
private final float mKeyLabelRatio;
private final float mKeyLargeLabelRatio;
@@ -217,16 +219,12 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
public KeyDrawParams(final TypedArray a) {
mKeyBackground = a.getDrawable(R.styleable.KeyboardView_keyBackground);
- if (!ResourceUtils.isValidFraction(mKeyLetterRatio = ResourceUtils.getFraction(a,
- R.styleable.KeyboardView_keyLetterSize))) {
- mKeyLetterSize = ResourceUtils.getDimensionPixelSize(a,
- R.styleable.KeyboardView_keyLetterSize);
- }
- if (!ResourceUtils.isValidFraction(mKeyLabelRatio = ResourceUtils.getFraction(a,
- R.styleable.KeyboardView_keyLabelSize))) {
- mKeyLabelSize = ResourceUtils.getDimensionPixelSize(a,
- R.styleable.KeyboardView_keyLabelSize);
- }
+ mKeyLetterRatio = ResourceUtils.getFraction(a, R.styleable.KeyboardView_keyLetterSize);
+ mKeyLetterSizeFromKeyboardView = ResourceUtils.getDimensionPixelSize(a,
+ R.styleable.KeyboardView_keyLetterSize);
+ mKeyLabelRatio = ResourceUtils.getFraction(a, R.styleable.KeyboardView_keyLabelSize);
+ mKeyLabelSize = ResourceUtils.getDimensionPixelSize(a,
+ R.styleable.KeyboardView_keyLabelSize);
mKeyLargeLabelRatio = ResourceUtils.getFraction(a,
R.styleable.KeyboardView_keyLargeLabelRatio);
mKeyLargeLetterRatio = ResourceUtils.getFraction(a,
@@ -245,19 +243,23 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
R.styleable.KeyboardView_keyPopupHintLetterPadding, 0);
mKeyShiftedLetterHintPadding = a.getDimension(
R.styleable.KeyboardView_keyShiftedLetterHintPadding, 0);
- mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000);
+ mKeyTextColor = a.getColor(
+ R.styleable.KeyboardView_keyTextColor, Color.WHITE);
mKeyTextInactivatedColor = a.getColor(
- R.styleable.KeyboardView_keyTextInactivatedColor, 0xFF000000);
- mKeyHintLetterColor = a.getColor(R.styleable.KeyboardView_keyHintLetterColor, 0);
- mKeyHintLabelColor = a.getColor(R.styleable.KeyboardView_keyHintLabelColor, 0);
+ R.styleable.KeyboardView_keyTextInactivatedColor, Color.WHITE);
+ mKeyHintLetterColor = a.getColor(
+ R.styleable.KeyboardView_keyHintLetterColor, Color.TRANSPARENT);
+ mKeyHintLabelColor = a.getColor(
+ R.styleable.KeyboardView_keyHintLabelColor, Color.TRANSPARENT);
mKeyShiftedLetterHintInactivatedColor = a.getColor(
- R.styleable.KeyboardView_keyShiftedLetterHintInactivatedColor, 0);
+ R.styleable.KeyboardView_keyShiftedLetterHintInactivatedColor,
+ Color.TRANSPARENT);
mKeyShiftedLetterHintActivatedColor = a.getColor(
- R.styleable.KeyboardView_keyShiftedLetterHintActivatedColor, 0);
+ R.styleable.KeyboardView_keyShiftedLetterHintActivatedColor, Color.TRANSPARENT);
mKeyTypefaceFromKeyboardView = Typeface.defaultFromStyle(
a.getInt(R.styleable.KeyboardView_keyTypeface, Typeface.NORMAL));
mKeyTypeface = mKeyTypefaceFromKeyboardView;
- mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, 0);
+ mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, Color.TRANSPARENT);
mShadowRadius = a.getFloat(R.styleable.KeyboardView_shadowRadius, 0f);
mKeyBackground.getPadding(mPadding);
@@ -267,19 +269,42 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
mKeyTypeface = (keyboard.mKeyTypeface != null)
? keyboard.mKeyTypeface : mKeyTypefaceFromKeyboardView;
final int keyHeight = keyboard.mMostCommonKeyHeight - keyboard.mVerticalGap;
- if (ResourceUtils.isValidFraction(mKeyLetterRatio)) {
- mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
- }
+ mKeyLetterSize = selectTextSizeFromDimensionOrRatio(keyHeight,
+ mKeyLetterSizeFromKeyboardView, mKeyLetterRatio,
+ mKeyLetterSizeFromKeyboardView);
+ // Override if size/ratio is specified in Keyboard.
+ mKeyLetterSize = selectTextSizeFromDimensionOrRatio(keyHeight, keyboard.mKeyLetterSize,
+ keyboard.mKeyLetterRatio, mKeyLetterSize);
if (ResourceUtils.isValidFraction(mKeyLabelRatio)) {
mKeyLabelSize = (int)(keyHeight * mKeyLabelRatio);
}
mKeyLargeLabelSize = (int)(keyHeight * mKeyLargeLabelRatio);
mKeyLargeLetterSize = (int)(keyHeight * mKeyLargeLetterRatio);
- mKeyHintLetterSize = (int)(keyHeight * mKeyHintLetterRatio);
- mKeyShiftedLetterHintSize = (int)(keyHeight * mKeyShiftedLetterHintRatio);
+ mKeyHintLetterSize = selectTextSizeFromKeyboardOrView(keyHeight,
+ keyboard.mKeyHintLetterRatio, mKeyHintLetterRatio);
+ mKeyShiftedLetterHintSize = selectTextSizeFromKeyboardOrView(keyHeight,
+ keyboard.mKeyShiftedLetterHintRatio, mKeyShiftedLetterHintRatio);
mKeyHintLabelSize = (int)(keyHeight * mKeyHintLabelRatio);
}
+ private static final int selectTextSizeFromDimensionOrRatio(final int keyHeight,
+ final int dimens, final float ratio, final int defaultDimens) {
+ if (ResourceUtils.isValidDimensionPixelSize(dimens)) {
+ return dimens;
+ }
+ if (ResourceUtils.isValidFraction(ratio)) {
+ return (int)(keyHeight * ratio);
+ }
+ return defaultDimens;
+ }
+
+ private static final int selectTextSizeFromKeyboardOrView(final int keyHeight,
+ final float ratioFromKeyboard, final float ratioFromView) {
+ final float ratio = ResourceUtils.isValidFraction(ratioFromKeyboard)
+ ? ratioFromKeyboard : ratioFromView;
+ return (int)(keyHeight * ratio);
+ }
+
public void blendAlpha(final Paint paint) {
final int color = paint.getColor();
paint.setARGB((paint.getAlpha() * mAnimAlpha) / Constants.Color.ALPHA_OPAQUE,
diff --git a/java/src/com/android/inputmethod/latin/ResourceUtils.java b/java/src/com/android/inputmethod/latin/ResourceUtils.java
index b3d7ac5bf..5021ad384 100644
--- a/java/src/com/android/inputmethod/latin/ResourceUtils.java
+++ b/java/src/com/android/inputmethod/latin/ResourceUtils.java
@@ -55,6 +55,16 @@ public final class ResourceUtils {
return fraction >= 0.0f;
}
+ // {@link Resources#getDimensionPixelSize(int)} returns at least one pixel size.
+ public static boolean isValidDimensionPixelSize(final int dimension) {
+ return dimension > 0;
+ }
+
+ // {@link Resources#getDimensionPixelOffset(int)} may return zero pixel offset.
+ public static boolean isValidDimensionPixelOffset(final int dimension) {
+ return dimension >= 0;
+ }
+
public static float getFraction(final TypedArray a, final int index, final float defValue) {
final TypedValue value = a.peekValue(index);
if (value == null || !isFractionValue(value)) {