aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-10-14 12:21:17 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-10-14 12:21:17 -0700
commitd2bc850c4c60dbb70e1a5edcf7f4dc4c64752fa2 (patch)
tree80b9f5effa11bfb22500ea29095eb2899d480277 /java/src
parent75c4b5fe1bbc7736d05abd7940825a30339c65fc (diff)
parent908a2f63949687c9e7acb2e3d50fd50815582e8b (diff)
downloadlatinime-d2bc850c4c60dbb70e1a5edcf7f4dc4c64752fa2.tar.gz
latinime-d2bc850c4c60dbb70e1a5edcf7f4dc4c64752fa2.tar.xz
latinime-d2bc850c4c60dbb70e1a5edcf7f4dc4c64752fa2.zip
am 908a2f63: Merge "Special handling of one key mini-keyboard to mitigate visual flicker" into ics-mr0
* commit '908a2f63949687c9e7acb2e3d50fd50815582e8b': Special handling of one key mini-keyboard to mitigate visual flicker
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java10
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboard.java19
2 files changed, 23 insertions, 6 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index e69dc581b..04e672590 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -100,7 +100,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
// Key preview
private final int mKeyPreviewLayoutId;
- private final KeyPreviewDrawParams mKeyPreviewDrawParams;
+ protected final KeyPreviewDrawParams mKeyPreviewDrawParams;
private boolean mShowKeyPreviewPopup = true;
private final int mDelayBeforePreview;
private int mDelayAfterPreview;
@@ -284,11 +284,13 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
}
}
- private static class KeyPreviewDrawParams {
+ protected static class KeyPreviewDrawParams {
// XML attributes.
public final Drawable mPreviewBackground;
public final Drawable mPreviewLeftBackground;
public final Drawable mPreviewRightBackground;
+ public final int mPreviewBackgroundWidth;
+ public final int mPreviewBackgroundHeight;
public final int mPreviewTextColor;
public final int mPreviewOffset;
public final int mPreviewHeight;
@@ -312,6 +314,10 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy {
setAlpha(mPreviewBackground, PREVIEW_ALPHA);
setAlpha(mPreviewLeftBackground, PREVIEW_ALPHA);
setAlpha(mPreviewRightBackground, PREVIEW_ALPHA);
+ mPreviewBackgroundWidth = a.getDimensionPixelSize(
+ R.styleable.KeyboardView_keyPreviewBackgroundWidth, 0);
+ mPreviewBackgroundHeight = a.getDimensionPixelSize(
+ R.styleable.KeyboardView_keyPreviewBackgroundHeight, 0);
mPreviewOffset = a.getDimensionPixelOffset(
R.styleable.KeyboardView_keyPreviewOffset, 0);
mPreviewHeight = a.getDimensionPixelSize(
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
index d4b35a556..ac9290bfd 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
@@ -215,10 +215,21 @@ public class MiniKeyboard extends Keyboard {
mParams.mIsRtlKeyboard = parentKeyboard.mIsRtlKeyboard;
mMoreKeys = parentKey.mMoreKeys;
- final int keyWidth = getMaxKeyWidth(view, mMoreKeys, mParams.mDefaultKeyWidth);
- mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn,
- keyWidth, parentKeyboard.mMostCommonKeyHeight, parentKey.mX
- + (mParams.mDefaultKeyWidth - keyWidth) / 2, view.getMeasuredWidth());
+ final int previewWidth = view.mKeyPreviewDrawParams.mPreviewBackgroundWidth;
+ final int previewHeight = view.mKeyPreviewDrawParams.mPreviewBackgroundHeight;
+ final int width, height;
+ // Use pre-computed width and height if these values are available and mini keyboard
+ // has only one key to mitigate visual flicker between key preview and mini keyboard.
+ if (view.isKeyPreviewPopupEnabled() && mMoreKeys.length == 1 && previewWidth > 0
+ && previewHeight > 0) {
+ width = previewWidth;
+ height = previewHeight + mParams.mVerticalGap;
+ } else {
+ width = getMaxKeyWidth(view, parentKey.mMoreKeys, mParams.mDefaultKeyWidth);
+ height = parentKeyboard.mMostCommonKeyHeight;
+ }
+ mParams.setParameters(mMoreKeys.length, parentKey.mMaxMoreKeysColumn, width, height,
+ parentKey.mX + (mParams.mDefaultKeyWidth - width) / 2, view.getMeasuredWidth());
}
private static int getMaxKeyWidth(KeyboardView view, CharSequence[] moreKeys,