From 7cc2595b6ffe3a6a3fcea8cccf5987d0e127212b Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Sun, 18 Dec 2011 00:58:47 +0900 Subject: [PATCH] Add LatinKeyboard.spacebarTextRatio attribute Bug: 5776979 Change-Id: Ia568d1170ed33a000eb3bb02ecdf611e4b5ff2d5 --- java/res/values-land/dimens.xml | 1 + java/res/values-sw600dp-land/dimens.xml | 1 + java/res/values-sw600dp/config.xml | 1 - java/res/values-sw600dp/dimens.xml | 1 + java/res/values-sw768dp-land/dimens.xml | 1 + java/res/values-sw768dp/config.xml | 1 - java/res/values-sw768dp/dimens.xml | 1 + java/res/values/attrs.xml | 3 ++ java/res/values/config.xml | 1 - java/res/values/dimens.xml | 1 + java/res/values/styles.xml | 1 + .../inputmethod/keyboard/LatinKeyboard.java | 48 +++++-------------- 12 files changed, 21 insertions(+), 40 deletions(-) diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index 4a5c5a44c..dcbfe463e 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -53,6 +53,7 @@ 52% 40% 90% + 40.000% 0.08in 0.01in diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml index 1b8c8a64a..1c725a484 100644 --- a/java/res/values-sw600dp-land/dimens.xml +++ b/java/res/values-sw600dp-land/dimens.xml @@ -48,6 +48,7 @@ 23% 34% 29% + 33.33% 40.0mm 5 diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml index 1854a8696..1dd93121d 100644 --- a/java/res/values-sw600dp/config.xml +++ b/java/res/values-sw600dp/config.xml @@ -38,6 +38,5 @@ 0 5 - medium 5 diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml index 31830239d..e393be579 100644 --- a/java/res/values-sw600dp/dimens.xml +++ b/java/res/values-sw600dp/dimens.xml @@ -59,6 +59,7 @@ 28% 26% 50% + 32.14% 15.0mm 0.1in diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml index 664e8c159..ef39f4393 100644 --- a/java/res/values-sw768dp-land/dimens.xml +++ b/java/res/values-sw768dp-land/dimens.xml @@ -52,6 +52,7 @@ 23% 28% 24% + 24.00% 17.0mm 26.5mm diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml index c25139a42..06553a7c9 100644 --- a/java/res/values-sw768dp/config.xml +++ b/java/res/values-sw768dp/config.xml @@ -36,7 +36,6 @@ 0 5 - medium 5 + + diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 8b99a1fcb..55f35f0c5 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -66,7 +66,6 @@ 2.0mm 5 - small 5 diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 352141ca6..e46ff7718 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -66,6 +66,7 @@ 44% 35% 82% + 33.735% 80sp 0.1in diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml index 2025a7dac..ed8795ade 100644 --- a/java/res/values/styles.xml +++ b/java/res/values/styles.xml @@ -33,6 +33,7 @@ diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java index d34e4108b..78a02547b 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java @@ -18,7 +18,6 @@ package com.android.inputmethod.keyboard; import android.content.Context; import android.content.res.Resources; -import android.content.res.Resources.Theme; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -45,13 +44,13 @@ public class LatinKeyboard extends Keyboard { private static final int SPACE_LED_LENGTH_PERCENT = 80; private final Resources mRes; - private final Theme mTheme; /* Space key and its icons, drawables and colors. */ private final Key mSpaceKey; private final Drawable mSpaceIcon; private final boolean mAutoCorrectionSpacebarLedEnabled; private final Drawable mAutoCorrectionSpacebarLedIcon; + private final float mSpacebarTextSize; private final int mSpacebarTextColor; private final int mSpacebarTextShadowColor; private final HashMap mSpaceDrawableCache = @@ -74,13 +73,9 @@ public class LatinKeyboard extends Keyboard { // its short language name will be used instead. private static final float MINIMUM_SCALE_OF_LANGUAGE_NAME = 0.8f; - private static final String SMALL_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR = "small"; - private static final String MEDIUM_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR = "medium"; - private LatinKeyboard(Context context, KeyboardParams params) { super(params); mRes = context.getResources(); - mTheme = context.getTheme(); // The index of space key is available only after Keyboard constructor has finished. mSpaceKey = getKey(CODE_SPACE); @@ -99,6 +94,10 @@ public class LatinKeyboard extends Keyboard { mAutoCorrectionSpacebarLedIcon = a.getDrawable( R.styleable.LatinKeyboard_autoCorrectionSpacebarLedIcon); mDisabledShortcutIcon = a.getDrawable(R.styleable.LatinKeyboard_disabledShortcutIcon); + final float spacebarTextRatio = a.getFraction(R.styleable.LatinKeyboard_spacebarTextRatio, + 1000, 1000, 1) / 1000.0f; + final int keyHeight = mMostCommonKeyHeight - mVerticalGap; + mSpacebarTextSize = keyHeight * spacebarTextRatio; mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0); mSpacebarTextShadowColor = a.getColor( R.styleable.LatinKeyboard_spacebarTextShadowColor, 0); @@ -116,6 +115,8 @@ public class LatinKeyboard extends Keyboard { } } + // TODO: Move this drawing method to LatinKeyboardView. + // TODO: Use Key.keyLabel to draw language name of spacebar. public Key updateSpacebarLanguage(float fadeFactor, boolean multipleEnabledIMEsOrSubtypes, boolean needsToDisplayLanguage) { mSpacebarTextFadeFactor = fadeFactor; @@ -131,6 +132,7 @@ public class LatinKeyboard extends Keyboard { return newColor; } + // TODO: Move this drawing method to LatinKeyboardView. public Key updateShortcutKey(boolean available) { if (mShortcutKey == null) return null; @@ -139,10 +141,12 @@ public class LatinKeyboard extends Keyboard { return mShortcutKey; } + // TODO: Get rid of this method public boolean needsAutoCorrectionSpacebarLed() { return mAutoCorrectionSpacebarLedEnabled; } + // TODO: Move this drawing method to LatinKeyboardView. /** * @return a key which should be invalidated. */ @@ -238,7 +242,6 @@ public class LatinKeyboard extends Keyboard { final int height = mSpaceIcon != null ? mSpaceIcon.getIntrinsicHeight() : mSpaceKey.mHeight; final Bitmap buffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(buffer); - final Resources res = mRes; canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); // If application locales are explicitly selected. @@ -247,25 +250,7 @@ public class LatinKeyboard extends Keyboard { paint.setAntiAlias(true); paint.setTextAlign(Align.CENTER); - final String textSizeOfLanguageOnSpacebar = res.getString( - R.string.config_text_size_of_language_on_spacebar, - SMALL_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR); - final int textStyle; - final int defaultTextSize; - if (MEDIUM_TEXT_SIZE_OF_LANGUAGE_ON_SPACEBAR.equals(textSizeOfLanguageOnSpacebar)) { - // TODO: TextAppearance_Medium depends on the current system wide font size - // settings. Probably should stop using this. - textStyle = android.R.style.TextAppearance_Medium; - defaultTextSize = 18; - } else { - // TODO: TextAppearance_Small depends on the current system wide font size - // settings. Probably should stop using this. - textStyle = android.R.style.TextAppearance_Small; - defaultTextSize = 14; - } - - final String language = layoutSpacebar(paint, inputLocale, width, getTextSizeFromTheme( - mTheme, textStyle, defaultTextSize)); + final String language = layoutSpacebar(paint, inputLocale, width, mSpacebarTextSize); // Draw language text with shadow // In case there is no space icon, we will place the language text at the center of @@ -305,15 +290,4 @@ public class LatinKeyboard extends Keyboard { return super.getNearestKeys(Math.max(0, Math.min(x, mOccupiedWidth - 1)), Math.max(0, Math.min(y, mOccupiedHeight - 1))); } - - private static final int[] ATTR_TEXT_SIZE = { android.R.attr.textSize }; - - private static int getTextSizeFromTheme(Theme theme, int style, int defValue) { - // TODO: This method should return text size that is independent from the current - // system wide font size settings. - final TypedArray a = theme.obtainStyledAttributes(style, ATTR_TEXT_SIZE); - final int textSize = a.getDimensionPixelSize(a.getResourceId(0, 0), defValue); - a.recycle(); - return textSize; - } }