From d157834345f2817cb80db3fdb7e6f22efa92f70c Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Thu, 12 May 2011 23:49:19 +0900 Subject: Auto text sizing using fraction of key height Bug: 4411676 Change-Id: I8f289dcebe577d277fe2ad6a8331d59f735cbada --- java/res/values-land/dimens.xml | 3 +++ java/res/values-xlarge-land/dimens.xml | 4 +-- java/res/values-xlarge/dimens.xml | 6 ++--- java/res/values/attrs.xml | 10 ++++--- java/res/values/dimens.xml | 7 +++-- java/res/values/styles.xml | 4 +-- .../android/inputmethod/keyboard/KeyboardView.java | 31 +++++++++++++++++----- 7 files changed, 43 insertions(+), 22 deletions(-) (limited to 'java') diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index 496da3de1..a541287f0 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -29,6 +29,9 @@ 0.0in 0.0in 0.0in + 55% + 35% + 90% 38dip 63dip 2dip diff --git a/java/res/values-xlarge-land/dimens.xml b/java/res/values-xlarge-land/dimens.xml index fd6b1f386..ade125639 100644 --- a/java/res/values-xlarge-land/dimens.xml +++ b/java/res/values-xlarge-land/dimens.xml @@ -30,8 +30,8 @@ 0.0mm 0.0mm - 28dip - 20dip + 30.7% + 21.9% 18dip 26.5mm diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml index 4f78bea4f..2796b6fcb 100644 --- a/java/res/values-xlarge/dimens.xml +++ b/java/res/values-xlarge/dimens.xml @@ -37,11 +37,11 @@ -13.0mm - 26dip - 16dip + 34.4% + 21.2% 6dip - 24dip + 26.3% 23.0mm 8.0mm diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 7f2a400df..f03da4f8f 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -25,11 +25,13 @@ checkable+checked+pressed. --> - - + + - - + + diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 82abf3b05..8f719541e 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -43,14 +43,13 @@ to user's finger. --> -0.05in - - 21dip - 13dip + 45% + 29% 21dip 80sp 0.000in - 36sp + 82% 130sp 0.193in diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml index 8a4b16d7a..3a389e57b 100644 --- a/java/res/values/styles.xml +++ b/java/res/values/styles.xml @@ -19,14 +19,14 @@ @drawable/keyboard_background @drawable/btn_keyboard_key - @dimen/key_letter_size + @fraction/key_letter_ratio normal #FFFFFFFF #FFFFFFFF @layout/key_preview @dimen/key_preview_offset @dimen/key_preview_height - @dimen/key_label_text_size + @fraction/key_label_text_ratio @layout/keyboard_popup @dimen/key_hysteresis_distance @dimen/keyboard_vertical_correction diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index bbda4009f..1ea1436d3 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -86,10 +86,12 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private static final int HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL = -1; // XML attribute + private float mKeyLetterRatio; private int mKeyLetterSize; private int mKeyTextColor; private int mKeyTextColorDisabled; private Typeface mKeyLetterStyle = Typeface.DEFAULT; + private float mLabelTextRatio; private int mLabelTextSize; private int mColorScheme = COLOR_SCHEME_WHITE; private int mShadowColor; @@ -108,7 +110,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { // Key preview private boolean mInForeground; private TextView mPreviewText; - private int mPreviewTextSizeLarge; + private float mPreviewTextRatio; + private int mPreviewTextSize; private boolean mShowKeyPreview = true; private int mKeyPreviewDisplayedY; private final int mDelayBeforePreview; @@ -327,8 +330,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { case R.styleable.KeyboardView_keyPreviewHeight: mPreviewHeight = a.getDimensionPixelSize(attr, 80); break; - case R.styleable.KeyboardView_keyLetterSize: - mKeyLetterSize = a.getDimensionPixelSize(attr, 18); + case R.styleable.KeyboardView_keyLetterRatio: + mKeyLetterRatio = getRatio(a, attr); break; case R.styleable.KeyboardView_keyTextColor: mKeyTextColor = a.getColor(attr, 0xFF000000); @@ -336,8 +339,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { case R.styleable.KeyboardView_keyTextColorDisabled: mKeyTextColorDisabled = a.getColor(attr, 0xFF000000); break; - case R.styleable.KeyboardView_labelTextSize: - mLabelTextSize = a.getDimensionPixelSize(attr, 14); + case R.styleable.KeyboardView_labelTextRatio: + mLabelTextRatio = getRatio(a, attr); break; case R.styleable.KeyboardView_popupLayout: mPopupLayout = a.getResourceId(attr, 0); @@ -365,7 +368,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { if (previewLayout != 0) { mPreviewText = (TextView) LayoutInflater.from(context).inflate(previewLayout, null); - mPreviewTextSizeLarge = (int) res.getDimension(R.dimen.key_preview_text_size_large); + mPreviewTextRatio = getRatio(res, R.fraction.key_preview_text_ratio); } else { mShowKeyPreview = false; } @@ -460,6 +463,16 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval); } + // Read fraction value in TypedArray as float. + private static float getRatio(TypedArray a, int index) { + return a.getFraction(index, 1000, 1000, 1) / 1000.0f; + } + + // Read fraction value in resource as float. + private static float getRatio(Resources res, int id) { + return res.getFraction(id, 1000, 1000) / 1000.0f; + } + public void startIgnoringDoubleTap() { if (ENABLE_CAPSLOCK_BY_DOUBLETAP) mHandler.startIgnoringDoubleTap(); @@ -506,6 +519,10 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { invalidateAllKeys(); mKeyDetector.setProximityThreshold(keyboard.getMostCommonKeyWidth()); mPopupPanelCache.clear(); + final int keyHeight = keyboard.getRowHeight() - keyboard.getVerticalGap(); + mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio); + mLabelTextSize = (int)(keyHeight * mLabelTextRatio); + mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio); } /** @@ -938,7 +955,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize); previewText.setTypeface(Typeface.DEFAULT_BOLD); } else { - previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSizeLarge); + previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize); previewText.setTypeface(mKeyLetterStyle); } } else { -- cgit v1.2.3-83-g751a