diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png deleted file mode 100644 index 5d1cb7833..000000000 Binary files a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_left.png and /dev/null differ diff --git a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png deleted file mode 100644 index 3a56d4745..000000000 Binary files a/java/res/drawable-hdpi/sym_keyboard_feedback_language_arrows_right.png and /dev/null differ diff --git a/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png deleted file mode 100644 index 79f235f25..000000000 Binary files a/java/res/drawable-hdpi/sym_keyboard_language_arrows_left.png and /dev/null differ diff --git a/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png deleted file mode 100644 index e1444e85b..000000000 Binary files a/java/res/drawable-hdpi/sym_keyboard_language_arrows_right.png and /dev/null differ diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png deleted file mode 100644 index eecb02694..000000000 Binary files a/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_left.png and /dev/null differ diff --git a/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png deleted file mode 100644 index 7e10ae3af..000000000 Binary files a/java/res/drawable-mdpi/sym_keyboard_feedback_language_arrows_right.png and /dev/null differ diff --git a/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png deleted file mode 100644 index 7067a8bf5..000000000 Binary files a/java/res/drawable-mdpi/sym_keyboard_language_arrows_left.png and /dev/null differ diff --git a/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png deleted file mode 100644 index f7a133d9e..000000000 Binary files a/java/res/drawable-mdpi/sym_keyboard_language_arrows_right.png and /dev/null differ diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png deleted file mode 100644 index a90b8dacf..000000000 Binary files a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_left.png and /dev/null differ diff --git a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png b/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png deleted file mode 100644 index 1123bf36e..000000000 Binary files a/java/res/drawable-xhdpi/sym_keyboard_feedback_language_arrows_right.png and /dev/null differ diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png deleted file mode 100644 index 226f2e617..000000000 Binary files a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_left.png and /dev/null differ diff --git a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png b/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png deleted file mode 100644 index 1e02e7e46..000000000 Binary files a/java/res/drawable-xhdpi/sym_keyboard_language_arrows_right.png and /dev/null differ diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 6b063efff..61ebf96bf 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -309,9 +309,5 @@ - - - - diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml index 708d452cc..e2c688995 100644 --- a/java/res/values/keyboard-icons-black.xml +++ b/java/res/values/keyboard-icons-black.xml @@ -38,9 +38,5 @@ @drawable/sym_keyboard_space_led @drawable/sym_bkeyboard_voice_off - @null - @null - @drawable/sym_keyboard_feedback_language_arrows_left - @drawable/sym_keyboard_feedback_language_arrows_right diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml index 86fb7bb96..c81315284 100644 --- a/java/res/values/keyboard-icons-ics.xml +++ b/java/res/values/keyboard-icons-ics.xml @@ -52,9 +52,5 @@ @drawable/sym_keyboard_space_led @drawable/sym_keyboard_voice_off_holo - @drawable/sym_keyboard_language_arrows_left - @drawable/sym_keyboard_language_arrows_right - @null - @null diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml index 63df28476..8bc7539fa 100644 --- a/java/res/values/keyboard-icons-white.xml +++ b/java/res/values/keyboard-icons-white.xml @@ -34,9 +34,5 @@ @drawable/sym_keyboard_space_led @drawable/sym_keyboard_voice_off_holo - @drawable/sym_keyboard_language_arrows_left - @drawable/sym_keyboard_language_arrows_right - @drawable/sym_keyboard_feedback_language_arrows_left - @drawable/sym_keyboard_feedback_language_arrows_right diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java index 1966d2d65..9d58f69ff 100644 --- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java @@ -23,9 +23,6 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.ColorFilter; -import android.graphics.ColorMatrix; -import android.graphics.ColorMatrixColorFilter; import android.graphics.Paint; import android.graphics.Paint.Align; import android.graphics.PorterDuff; @@ -61,8 +58,6 @@ public class LatinKeyboard extends Keyboard { private final int mSpaceKeyIndex; private final boolean mAutoCorrectionSpacebarLedEnabled; private final Drawable mAutoCorrectionSpacebarLedIcon; - private final Drawable mSpacebarArrowLeftIcon; - private final Drawable mSpacebarArrowRightIcon; private final int mSpacebarTextColor; private final int mSpacebarTextShadowColor; private float mSpacebarTextFadeFactor = 0.0f; @@ -77,6 +72,11 @@ public class LatinKeyboard extends Keyboard { private final Drawable mEnabledShortcutIcon; private final Drawable mDisabledShortcutIcon; + // BLACK LEFT-POINTING TRIANGLE and two spaces. + public static final String ARROW_LEFT = "\u25C0 "; + // Two spaces and BLACK RIGHT-POINTING TRIANGLE. + public static final String ARROW_RIGHT = " \u25B6"; + // Minimum width of spacebar dragging to trigger the language switch (represented by the number // of the most common key width of this keyboard). private static final int SPACEBAR_DRAG_WIDTH = 3; @@ -131,10 +131,6 @@ public class LatinKeyboard extends Keyboard { mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0); mSpacebarTextShadowColor = a.getColor( R.styleable.LatinKeyboard_spacebarTextShadowColor, 0); - mSpacebarArrowLeftIcon = a.getDrawable( - R.styleable.LatinKeyboard_spacebarArrowLeftIcon); - mSpacebarArrowRightIcon = a.getDrawable( - R.styleable.LatinKeyboard_spacebarArrowRightIcon); a.recycle(); // The threshold is "key width" x 1.25 @@ -165,12 +161,6 @@ public class LatinKeyboard extends Keyboard { return newColor; } - private static ColorFilter getSpacebarDrawableFilter(float fadeFactor) { - final ColorMatrix colorMatrix = new ColorMatrix(); - colorMatrix.setScale(1, 1, 1, fadeFactor); - return new ColorMatrixColorFilter(colorMatrix); - } - public void updateShortcutKey(boolean available, LatinKeyboardView view) { if (mShortcutKey == null) return; @@ -214,59 +204,40 @@ public class LatinKeyboard extends Keyboard { } // Layout local language name and left and right arrow on spacebar. - private static String layoutSpacebar(Paint paint, Locale locale, Drawable icon, Drawable lArrow, - Drawable rArrow, int width, int height, float origTextSize) { - final float arrowWidth; - if (lArrow != null && rArrow != null) { - arrowWidth = lArrow.getIntrinsicWidth(); - } else { - arrowWidth = 0; - } - final float maxTextWidth = width - (arrowWidth + arrowWidth); + private static String layoutSpacebar(Paint paint, Locale locale, int width, + float origTextSize) { final Rect bounds = new Rect(); // Estimate appropriate language name text size to fit in maxTextWidth. - String language = SubtypeSwitcher.getFullDisplayName(locale, true); + String language = ARROW_LEFT + SubtypeSwitcher.getFullDisplayName(locale, true) + + ARROW_RIGHT; int textWidth = getTextWidth(paint, language, origTextSize, bounds); // Assuming text width and text size are proportional to each other. - float textSize = origTextSize * Math.min(maxTextWidth / textWidth, 1.0f); + float textSize = origTextSize * Math.min(width / textWidth, 1.0f); // allow variable text size textWidth = getTextWidth(paint, language, textSize, bounds); // If text size goes too small or text does not fit, use middle or short name final boolean useMiddleName = (textSize / origTextSize < MINIMUM_SCALE_OF_LANGUAGE_NAME) - || (textWidth > maxTextWidth); + || (textWidth > width); final boolean useShortName; if (useMiddleName) { - language = SubtypeSwitcher.getMiddleDisplayLanguage(locale); + language = ARROW_LEFT + SubtypeSwitcher.getMiddleDisplayLanguage(locale) + ARROW_RIGHT; textWidth = getTextWidth(paint, language, origTextSize, bounds); - textSize = origTextSize * Math.min(maxTextWidth / textWidth, 1.0f); + textSize = origTextSize * Math.min(width / textWidth, 1.0f); useShortName = (textSize / origTextSize < MINIMUM_SCALE_OF_LANGUAGE_NAME) - || (textWidth > maxTextWidth); + || (textWidth > width); } else { useShortName = false; } if (useShortName) { - language = SubtypeSwitcher.getShortDisplayLanguage(locale); + language = ARROW_LEFT + SubtypeSwitcher.getShortDisplayLanguage(locale) + ARROW_RIGHT; textWidth = getTextWidth(paint, language, origTextSize, bounds); - textSize = origTextSize * Math.min(maxTextWidth / textWidth, 1.0f); + textSize = origTextSize * Math.min(width / textWidth, 1.0f); } paint.setTextSize(textSize); - // Place left and right arrow just before and after language text. - if (lArrow != null && rArrow != null) { - final float textHeight = -paint.ascent() + paint.descent(); - final float baseline = (icon != null) ? height * SPACEBAR_LANGUAGE_BASELINE - : height / 2 + textHeight / 2; - final int arrowHeight = lArrow.getIntrinsicHeight(); - final int top = (int)(baseline - arrowHeight); - final float remains = (width - textWidth) / 2; - lArrow.setBounds((int)(remains - arrowWidth), top, (int)remains, (int)baseline); - rArrow.setBounds((int)(remains + textWidth), top, - (int)(remains + textWidth + arrowWidth), (int)baseline); - } - return language; } @@ -311,9 +282,8 @@ public class LatinKeyboard extends Keyboard { defaultTextSize = 14; } - final String language = layoutSpacebar(paint, inputLocale, mSpaceIcon, - mSpacebarArrowLeftIcon, mSpacebarArrowRightIcon, width, height, - getTextSizeFromTheme(mTheme, textStyle, defaultTextSize)); + final String language = layoutSpacebar(paint, inputLocale, width, getTextSizeFromTheme( + mTheme, textStyle, defaultTextSize)); // Draw language text with shadow // In case there is no space icon, we will place the language text at the center of @@ -326,19 +296,6 @@ public class LatinKeyboard extends Keyboard { canvas.drawText(language, width / 2, baseline - descent - 1, paint); paint.setColor(getSpacebarTextColor(mSpacebarTextColor, textFadeFactor)); canvas.drawText(language, width / 2, baseline - descent, paint); - - // Put arrows that are already laid out on either side of the text - // Because language switch is disabled on phone and number layouts, hide arrows. - // TODO: Sort out how to enable language switch on these layouts. - if (mSpacebarArrowLeftIcon != null && mSpacebarArrowRightIcon != null - && mSubtypeSwitcher.useSpacebarLanguageSwitcher() - && mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1 - && !(isPhoneKeyboard() || isNumberKeyboard())) { - mSpacebarArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor)); - mSpacebarArrowRightIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor)); - mSpacebarArrowLeftIcon.draw(canvas); - mSpacebarArrowRightIcon.draw(canvas); - } } // Draw the spacebar icon at the bottom diff --git a/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java index 78a3a7e9d..ef3ea4c12 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java +++ b/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java @@ -46,8 +46,7 @@ public class SlidingLocaleDrawable extends Drawable { private final int mSpacebarTextColor; private final TextPaint mTextPaint; private final int mMiddleX; - private final Drawable mLeftDrawable; - private final Drawable mRightDrawable; + private final boolean mDrawArrows; private final int mThreshold; private int mDiff; @@ -65,20 +64,18 @@ public class SlidingLocaleDrawable extends Drawable { textPaint.setTextSize(LatinKeyboard.getTextSizeFromTheme( context.getTheme(), android.R.style.TextAppearance_Medium, 18)); textPaint.setColor(Color.TRANSPARENT); - textPaint.setTextAlign(Align.CENTER); textPaint.setAntiAlias(true); mTextPaint = textPaint; mMiddleX = (background != null) ? (mWidth - mBackground.getIntrinsicWidth()) / 2 : 0; - final TypedArray lka = context.obtainStyledAttributes( - null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard); - mLeftDrawable = lka.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewLeftIcon); - mRightDrawable = lka.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewRightIcon); - lka.recycle(); - final TypedArray kva = context.obtainStyledAttributes( + final TypedArray a = context.obtainStyledAttributes( null, R.styleable.KeyboardView, R.attr.keyboardViewStyle, R.style.KeyboardView); - mSpacebarTextColor = kva.getColor(R.styleable.KeyboardView_keyPreviewTextColor, 0); - kva.recycle(); + mSpacebarTextColor = a.getColor(R.styleable.KeyboardView_keyPreviewTextColor, 0); + final int spacebarPreviewBackrgound = a.getResourceId( + R.styleable.KeyboardView_keyPreviewSpacebarBackground, 0); + // If spacebar preview background is transparent, we need not draw arrows. + mDrawArrows = (spacebarPreviewBackrgound != R.drawable.transparent); + a.recycle(); mThreshold = ViewConfiguration.get(context).getScaledTouchSlop(); } @@ -105,8 +102,6 @@ public class SlidingLocaleDrawable extends Drawable { final int width = mWidth; final int height = mHeight; final int diff = mDiff; - final Drawable lArrow = mLeftDrawable; - final Drawable rArrow = mRightDrawable; canvas.clipRect(0, 0, width, height); if (mCurrentLanguage == null) { SubtypeSwitcher subtypeSwitcher = SubtypeSwitcher.getInstance(); @@ -114,20 +109,19 @@ public class SlidingLocaleDrawable extends Drawable { mNextLanguage = subtypeSwitcher.getNextInputLanguageName(); mPrevLanguage = subtypeSwitcher.getPreviousInputLanguageName(); } - // Draw language text with shadow + // Draw language text. final float baseline = mHeight * LatinKeyboard.SPACEBAR_LANGUAGE_BASELINE - paint.descent(); paint.setColor(mSpacebarTextColor); + paint.setTextAlign(Align.CENTER); canvas.drawText(mCurrentLanguage, width / 2 + diff, baseline, paint); canvas.drawText(mNextLanguage, diff - width / 2, baseline, paint); canvas.drawText(mPrevLanguage, diff + width + width / 2, baseline, paint); - - if (lArrow != null && rArrow != null) { - Keyboard.setDefaultBounds(lArrow); - rArrow.setBounds(width - rArrow.getIntrinsicWidth(), 0, width, - rArrow.getIntrinsicHeight()); - lArrow.draw(canvas); - rArrow.draw(canvas); + if (mDrawArrows) { + paint.setTextAlign(Align.LEFT); + canvas.drawText(LatinKeyboard.ARROW_LEFT, 0, baseline, paint); + paint.setTextAlign(Align.RIGHT); + canvas.drawText(LatinKeyboard.ARROW_RIGHT, width, baseline, paint); } } if (mBackground != null) {