aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-06-28 03:01:35 +0900
committerTadashi G. Takaoka <takaoka@google.com>2011-06-28 16:00:23 +0900
commitd87f28f1457f5490df3796fa2a8d815b2bcde152 (patch)
treefcb2cb6420c1ee561fbb8f2d037b711ea6f0dca7
parentf41e9f79eb19fc881b1f8fd76a767d6edf375f19 (diff)
downloadlatinime-d87f28f1457f5490df3796fa2a8d815b2bcde152.tar.gz
latinime-d87f28f1457f5490df3796fa2a8d815b2bcde152.tar.xz
latinime-d87f28f1457f5490df3796fa2a8d815b2bcde152.zip
Use left/right-edge popup preview background
Bug: 4902361 Change-Id: Iafbadd0e44c0db2fb6a0875c964304bec6ac8cb0
-rw-r--r--java/res/drawable/keyboard_key_feedback_left_ics.xml21
-rw-r--r--java/res/drawable/keyboard_key_feedback_right_ics.xml21
-rw-r--r--java/res/values/attrs.xml4
-rw-r--r--java/res/values/styles.xml4
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardView.java29
5 files changed, 70 insertions, 9 deletions
diff --git a/java/res/drawable/keyboard_key_feedback_left_ics.xml b/java/res/drawable/keyboard_key_feedback_left_ics.xml
new file mode 100644
index 000000000..b68b37f6b
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_left_ics.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_long_pressable="true"
+ android:drawable="@drawable/keyboard_key_feedback_left_more_background_holo" />
+ <item android:drawable="@drawable/keyboard_key_feedback_left_background_holo" />
+</selector>
diff --git a/java/res/drawable/keyboard_key_feedback_right_ics.xml b/java/res/drawable/keyboard_key_feedback_right_ics.xml
new file mode 100644
index 000000000..830678a5a
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_right_ics.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_long_pressable="true"
+ android:drawable="@drawable/keyboard_key_feedback_right_more_background_holo" />
+ <item android:drawable="@drawable/keyboard_key_feedback_right_background_holo" />
+</selector>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 6b063efff..d89f55a50 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -68,6 +68,10 @@
<attr name="keyPreviewLayout" format="reference" />
<!-- The background for key press feedback. -->
<attr name="keyPreviewBackground" format="reference" />
+ <!-- The background for the left edge key press feedback. -->
+ <attr name="keyPreviewLeftBackground" format="reference" />
+ <!-- The background for the right edge key press feedback. -->
+ <attr name="keyPreviewRightBackground" format="reference" />
<!-- The background for spacebar press feedback. -->
<attr name="keyPreviewSpacebarBackground" format="reference" />
<!-- The text color for key press feedback. -->
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 1f1488e26..08301be5c 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -51,6 +51,8 @@
<item name="keyUppercaseLetterActivatedColor">#CCE0E4E5</item>
<item name="keyPreviewLayout">@layout/key_preview</item>
<item name="keyPreviewBackground">@drawable/keyboard_key_feedback</item>
+ <item name="keyPreviewLeftBackground">@null</item>
+ <item name="keyPreviewRightBackground">@null</item>
<item name="keyPreviewSpacebarBackground">@drawable/keyboard_key_feedback</item>
<item name="keyPreviewTextColor">#FFFFFFFF</item>
<item name="keyPreviewOffset">@dimen/key_preview_offset</item>
@@ -152,6 +154,8 @@
<item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
<item name="keyUppercaseLetterActivatedColor">#FFFFFFFF</item>
<item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
+ <item name="keyPreviewLeftBackground">@drawable/keyboard_key_feedback_left_ics</item>
+ <item name="keyPreviewRightBackground">@drawable/keyboard_key_feedback_right_ics</item>
<item name="keyPreviewSpacebarBackground">@drawable/transparent</item>
<item name="keyPreviewTextColor">#FFFFFFFF</item>
<item name="keyPreviewHeight">@dimen/key_preview_height_ics</item>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 52e2a6a6d..da738b24c 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -118,6 +118,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private final float mKeyHysteresisDistance;
private final float mVerticalCorrection;
private final Drawable mPreviewBackground;
+ private final Drawable mPreviewLeftBackground;
+ private final Drawable mPreviewRightBackground;
private final Drawable mPreviewSpacebarBackground;
private final int mPreviewTextColor;
private final float mPreviewTextRatio;
@@ -203,6 +205,9 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
private static final String KEY_LABEL_REFERENCE_CHAR = "M";
private final int mKeyLabelHorizontalPadding;
+ private static final int MEASURESPEC_UNSPECIFIED = MeasureSpec.makeMeasureSpec(
+ 0, MeasureSpec.UNSPECIFIED);
+
private final UIHandler mHandler = new UIHandler(this);
public static class UIHandler extends StaticInnerHandlerWrapper<KeyboardView> {
@@ -354,6 +359,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
mShowKeyPreviewPopup = false;
}
mPreviewBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewBackground);
+ mPreviewLeftBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewLeftBackground);
+ mPreviewRightBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewRightBackground);
mPreviewSpacebarBackground = a.getDrawable(
R.styleable.KeyboardView_keyPreviewSpacebarBackground);
mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0);
@@ -1016,21 +1023,25 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
} else {
previewText.setBackgroundDrawable(mPreviewBackground);
}
- // Set the preview background state
- previewText.getBackground().setState(
- key.mPopupCharacters != null ? LONG_PRESSABLE_STATE_SET : EMPTY_STATE_SET);
- previewText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+ previewText.measure(MEASURESPEC_UNSPECIFIED, MEASURESPEC_UNSPECIFIED);
final int previewWidth = Math.max(previewText.getMeasuredWidth(), keyDrawWidth
+ previewText.getPaddingLeft() + previewText.getPaddingRight());
final int previewHeight = mPreviewHeight;
getLocationInWindow(mCoordinates);
- final int previewX = keyDrawX - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
+ int previewX = keyDrawX - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
final int previewY = key.mY - previewHeight + mCoordinates[1] + mPreviewOffset;
+ if (previewX < 0 && mPreviewLeftBackground != null) {
+ previewText.setBackgroundDrawable(mPreviewLeftBackground);
+ previewX = 0;
+ } else if (previewX + previewWidth > getWidth() && mPreviewRightBackground != null) {
+ previewText.setBackgroundDrawable(mPreviewRightBackground);
+ previewX = getWidth() - previewWidth;
+ }
- // Place the key preview.
- // TODO: Adjust position of key previews which touch screen edges
+ // Set the preview background state
+ previewText.getBackground().setState(
+ key.mPopupCharacters != null ? LONG_PRESSABLE_STATE_SET : EMPTY_STATE_SET);
FrameLayoutCompatUtils.placeViewAt(
previewText, previewX, previewY, previewWidth, previewHeight);
previewText.setVisibility(VISIBLE);
@@ -1147,7 +1158,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
miniKeyboardView.setKeyboard(keyboard);
container.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
+ MEASURESPEC_UNSPECIFIED);
return miniKeyboardView;
}