aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/values/attrs.xml10
-rw-r--r--java/res/values/themes-common.xml2
-rw-r--r--java/res/xml/key_styles_number.xml2
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java6
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java13
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java28
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java8
7 files changed, 53 insertions, 16 deletions
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 52683da2c..8b3687a8c 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -293,7 +293,7 @@
<attr name="keyLabelFlags" format="integer">
<!-- This should be aligned with Key.LABEL_FLAGS__* -->
<flag name="alignIconToBottom" value="0x04" />
- <flag name="alignLeftOfCenter" value="0x08" />
+ <flag name="alignLabelOffCenter" value="0x08" />
<flag name="fontNormal" value="0x10" />
<flag name="fontMonoSpace" value="0x20" />
<flag name="fontDefault" value="0x30" />
@@ -365,6 +365,14 @@
<attr name="keyHintLabelRatio" format="fraction" />
<!-- Size of the text for shifted letter hint, in the proportion of key height. -->
<attr name="keyShiftedLetterHintRatio" format="fraction" />
+ <!-- The label's horizontal offset to the center of the key. Negative is to left and
+ positive is to right. The value is in proportion of the width of
+ TypefaceUtils.KEY_LABEL_REFERENCE_CHAR. -->
+ <attr name="keyLabelOffCenterRatio" format="fraction" />
+ <!-- The hint label's horizontal offset to the center of the key. Negative is to left and
+ positive is to right. The value is in proportion of the width of
+ TypefaceUtils.KEY_LABEL_REFERENCE_CHAR. -->
+ <attr name="keyHintLabelOffCenterRatio" format="fraction" />
<!-- Color to use for the label in a key. -->
<attr name="keyTextColor" format="color" />
<attr name="keyTextShadowColor" format="color" />
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index 44b1c7b96..696a99c1a 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -40,6 +40,8 @@
<item name="keyHintLetterRatio">@fraction/config_key_hint_letter_ratio</item>
<item name="keyHintLabelRatio">@fraction/config_key_hint_label_ratio</item>
<item name="keyShiftedLetterHintRatio">@fraction/config_key_shifted_letter_hint_ratio</item>
+ <item name="keyLabelOffCenterRatio">-175%</item>
+ <item name="keyHintLabelOffCenterRatio">200%</item>
<item name="keyTypeface">normal</item>
<!-- A negative value to disable key text shadow layer. -->
<item name="keyTextShadowRadius">-1.0</item>
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index 3038097d8..14b202874 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -39,7 +39,7 @@
latin:parentStyle="numKeyBaseStyle" />
<key-style
latin:styleName="numberKeyStyle"
- latin:keyLabelFlags="alignLeftOfCenter|hasHintLabel"
+ latin:keyLabelFlags="alignLabelOffCenter|hasHintLabel"
latin:parentStyle="numKeyStyle" />
<key-style
latin:styleName="num0KeyStyle"
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index b7f6d268b..f8c005845 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -59,7 +59,7 @@ public class Key implements Comparable<Key> {
/** Flags of the label */
private final int mLabelFlags;
private static final int LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM = 0x04;
- private static final int LABEL_FLAGS_ALIGN_LEFT_OF_CENTER = 0x08;
+ private static final int LABEL_FLAGS_ALIGN_LABEL_OFF_CENTER = 0x08;
// Font typeface specification.
private static final int LABEL_FLAGS_FONT_MASK = 0x30;
private static final int LABEL_FLAGS_FONT_NORMAL = 0x10;
@@ -645,8 +645,8 @@ public class Key implements Comparable<Key> {
return (mLabelFlags & LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM) != 0;
}
- public final boolean isAlignLeftOfCenter() {
- return (mLabelFlags & LABEL_FLAGS_ALIGN_LEFT_OF_CENTER) != 0;
+ public final boolean isAlignLabelOffCenter() {
+ return (mLabelFlags & LABEL_FLAGS_ALIGN_LABEL_OFF_CENTER) != 0;
}
public final boolean hasPopupHint() {
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 4a791f325..72b254756 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -369,9 +369,9 @@ public class KeyboardView extends View {
final float baseline = centerY + labelCharHeight / 2.0f;
// Horizontal label text alignment
- if (key.isAlignLeftOfCenter()) {
- // TODO: Parameterise this?
- positionX = centerX - labelCharWidth * 7.0f / 4.0f;
+ if (key.isAlignLabelOffCenter()) {
+ // The label is placed off center of the key. Used mainly on "phone number" layout.
+ positionX = centerX + params.mLabelOffCenterRatio * labelCharWidth;
paint.setTextAlign(Align.LEFT);
} else {
positionX = centerX;
@@ -418,15 +418,12 @@ public class KeyboardView extends View {
blendAlpha(paint, params.mAnimAlpha);
final float labelCharHeight = TypefaceUtils.getReferenceCharHeight(paint);
final float labelCharWidth = TypefaceUtils.getReferenceCharWidth(paint);
- final KeyVisualAttributes visualAttr = key.getVisualAttributes();
- final float adjustmentY = (visualAttr == null) ? 0.0f
- : visualAttr.mHintLabelVerticalAdjustment * labelCharHeight;
+ final float adjustmentY = params.mHintLabelVerticalAdjustment * labelCharHeight;
final float hintX, hintY;
if (key.hasHintLabel()) {
// The hint label is placed just right of the key label. Used mainly on
// "phone number" layout.
- // TODO: Generalize the following calculations.
- hintX = positionX + labelCharWidth * 2.0f;
+ hintX = positionX + params.mHintLabelOffCenterRatio * labelCharWidth;
hintY = centerY + labelCharHeight / 2.0f;
paint.setTextAlign(Align.LEFT);
} else if (key.hasShiftedLetterHint()) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java b/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
index 72477ce62..df50efdc1 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyDrawParams.java
@@ -41,6 +41,10 @@ public final class KeyDrawParams {
public int mShiftedLetterHintActivatedColor;
public int mPreviewTextColor;
+ public float mHintLabelVerticalAdjustment;
+ public float mLabelOffCenterRatio;
+ public float mHintLabelOffCenterRatio;
+
public int mAnimAlpha;
public KeyDrawParams() {}
@@ -66,6 +70,10 @@ public final class KeyDrawParams {
mShiftedLetterHintActivatedColor = copyFrom.mShiftedLetterHintActivatedColor;
mPreviewTextColor = copyFrom.mPreviewTextColor;
+ mHintLabelVerticalAdjustment = copyFrom.mHintLabelVerticalAdjustment;
+ mLabelOffCenterRatio = copyFrom.mLabelOffCenterRatio;
+ mHintLabelOffCenterRatio = copyFrom.mHintLabelOffCenterRatio;
+
mAnimAlpha = copyFrom.mAnimAlpha;
}
@@ -100,6 +108,13 @@ public final class KeyDrawParams {
mShiftedLetterHintActivatedColor = selectColor(
attr.mShiftedLetterHintActivatedColor, mShiftedLetterHintActivatedColor);
mPreviewTextColor = selectColor(attr.mPreviewTextColor, mPreviewTextColor);
+
+ mHintLabelVerticalAdjustment = selectFloatIfNonZero(
+ attr.mHintLabelVerticalAdjustment, mHintLabelVerticalAdjustment);
+ mLabelOffCenterRatio = selectFloatIfNonZero(
+ attr.mLabelOffCenterRatio, mLabelOffCenterRatio);
+ mHintLabelOffCenterRatio = selectFloatIfNonZero(
+ attr.mHintLabelOffCenterRatio, mHintLabelOffCenterRatio);
}
public KeyDrawParams mayCloneAndUpdateParams(final int keyHeight,
@@ -112,7 +127,7 @@ public final class KeyDrawParams {
return newParams;
}
- private static final int selectTextSizeFromDimensionOrRatio(final int keyHeight,
+ private static int selectTextSizeFromDimensionOrRatio(final int keyHeight,
final int dimens, final float ratio, final int defaultDimens) {
if (ResourceUtils.isValidDimensionPixelSize(dimens)) {
return dimens;
@@ -123,7 +138,7 @@ public final class KeyDrawParams {
return defaultDimens;
}
- private static final int selectTextSize(final int keyHeight, final float ratio,
+ private static int selectTextSize(final int keyHeight, final float ratio,
final int defaultSize) {
if (ResourceUtils.isValidFraction(ratio)) {
return (int)(keyHeight * ratio);
@@ -131,10 +146,17 @@ public final class KeyDrawParams {
return defaultSize;
}
- private static final int selectColor(final int attrColor, final int defaultColor) {
+ private static int selectColor(final int attrColor, final int defaultColor) {
if (attrColor != 0) {
return attrColor;
}
return defaultColor;
}
+
+ private static float selectFloatIfNonZero(final float attrFloat, final float defaultFloat) {
+ if (attrFloat != 0) {
+ return attrFloat;
+ }
+ return defaultFloat;
+ }
}
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java b/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
index b94f4834b..c60d587db 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyVisualAttributes.java
@@ -47,6 +47,8 @@ public final class KeyVisualAttributes {
public final int mPreviewTextColor;
public final float mHintLabelVerticalAdjustment;
+ public final float mLabelOffCenterRatio;
+ public final float mHintLabelOffCenterRatio;
private static final int[] VISUAL_ATTRIBUTE_IDS = {
R.styleable.Keyboard_Key_keyTypeface,
@@ -67,6 +69,8 @@ public final class KeyVisualAttributes {
R.styleable.Keyboard_Key_keyShiftedLetterHintActivatedColor,
R.styleable.Keyboard_Key_keyPreviewTextColor,
R.styleable.Keyboard_Key_keyHintLabelVerticalAdjustment,
+ R.styleable.Keyboard_Key_keyLabelOffCenterRatio,
+ R.styleable.Keyboard_Key_keyHintLabelOffCenterRatio
};
private static final SparseIntArray sVisualAttributeIds = new SparseIntArray();
private static final int ATTR_DEFINED = 1;
@@ -131,5 +135,9 @@ public final class KeyVisualAttributes {
mHintLabelVerticalAdjustment = ResourceUtils.getFraction(keyAttr,
R.styleable.Keyboard_Key_keyHintLabelVerticalAdjustment, 0.0f);
+ mLabelOffCenterRatio = ResourceUtils.getFraction(keyAttr,
+ R.styleable.Keyboard_Key_keyLabelOffCenterRatio, 0.0f);
+ mHintLabelOffCenterRatio = ResourceUtils.getFraction(keyAttr,
+ R.styleable.Keyboard_Key_keyHintLabelOffCenterRatio, 0.0f);
}
}