summaryrefslogtreecommitdiff
path: root/java/src/com/android/inputmethod/keyboard/Key.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-05-14 15:30:37 +0900
committerTadashi G. Takaoka <takaoka@google.com>2014-05-14 17:57:51 +0900
commitc1e6100bdea95872cb66a64b7ee14ab0ae46476f (patch)
treede8db268d5466f2293817520b765ef03b2c9c85a /java/src/com/android/inputmethod/keyboard/Key.java
parentead058b00216339a8688c604886645fce42fee4a (diff)
Separate functional key background from normal one
This CL also moves spacebarBackground attribute from MainKeyboardView to KeyboardView. This CL must be checked in together with I48c383ca97. Bug: 14419121 Change-Id: Id356d0086a8fb21375fb5c66076873258fb3d63e
Diffstat (limited to 'java/src/com/android/inputmethod/keyboard/Key.java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java51
1 files changed, 29 insertions, 22 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 816a94300..4c2250740 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -218,7 +218,7 @@ public class Key implements Comparable<Key> {
*
* @param keySpec the key specification.
* @param keyAttr the Key XML attributes array.
- * @param keyStyle the {@link KeyStyle} of this key.
+ * @param style the {@link KeyStyle} of this key.
* @param params the keyboard building parameters.
* @param row the row that this key belongs to. row's x-coordinate will be the right edge of
* this key.
@@ -857,17 +857,6 @@ public class Key implements Comparable<Key> {
android.R.attr.state_empty
};
- // functional normal state (with properties)
- private static final int[] KEY_STATE_FUNCTIONAL_NORMAL = {
- android.R.attr.state_single
- };
-
- // functional pressed state (with properties)
- private static final int[] KEY_STATE_FUNCTIONAL_PRESSED = {
- android.R.attr.state_single,
- android.R.attr.state_pressed
- };
-
// action normal state (with properties)
private static final int[] KEY_STATE_ACTIVE_NORMAL = {
android.R.attr.state_active
@@ -880,25 +869,43 @@ public class Key implements Comparable<Key> {
};
/**
- * Returns the drawable state for the key, based on the current state and type of the key.
- * @return the drawable state of the key.
+ * Returns the background drawable for the key, based on the current state and type of the key.
+ * @return the background drawable of the key.
* @see android.graphics.drawable.StateListDrawable#setState(int[])
*/
- public final int[] getCurrentDrawableState() {
+ public final Drawable selectBackgroundDrawable(final Drawable keyBackground,
+ final Drawable functionalKeyBackground, final Drawable spacebarBackground) {
+ final Drawable background;
+ if (mBackgroundType == BACKGROUND_TYPE_FUNCTIONAL) {
+ background = functionalKeyBackground;
+ } else if (getCode() == Constants.CODE_SPACE) {
+ background = spacebarBackground;
+ } else {
+ background = keyBackground;
+ }
+ final int[] stateSet;
switch (mBackgroundType) {
- case BACKGROUND_TYPE_FUNCTIONAL:
- return mPressed ? KEY_STATE_FUNCTIONAL_PRESSED : KEY_STATE_FUNCTIONAL_NORMAL;
case BACKGROUND_TYPE_ACTION:
- return mPressed ? KEY_STATE_ACTIVE_PRESSED : KEY_STATE_ACTIVE_NORMAL;
+ stateSet = mPressed ? KEY_STATE_ACTIVE_PRESSED : KEY_STATE_ACTIVE_NORMAL;
+ break;
case BACKGROUND_TYPE_STICKY_OFF:
- return mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_OFF : KEY_STATE_NORMAL_HIGHLIGHT_OFF;
+ stateSet = mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_OFF : KEY_STATE_NORMAL_HIGHLIGHT_OFF;
+ break;
case BACKGROUND_TYPE_STICKY_ON:
- return mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_ON : KEY_STATE_NORMAL_HIGHLIGHT_ON;
+ stateSet = mPressed ? KEY_STATE_PRESSED_HIGHLIGHT_ON : KEY_STATE_NORMAL_HIGHLIGHT_ON;
+ break;
case BACKGROUND_TYPE_EMPTY:
- return mPressed ? KEY_STATE_PRESSED : KEY_STATE_EMPTY;
+ stateSet = mPressed ? KEY_STATE_PRESSED : KEY_STATE_EMPTY;
+ break;
+ case BACKGROUND_TYPE_FUNCTIONAL:
+ stateSet = mPressed ? KEY_STATE_PRESSED : KEY_STATE_NORMAL;
+ break;
default: /* BACKGROUND_TYPE_NORMAL */
- return mPressed ? KEY_STATE_PRESSED : KEY_STATE_NORMAL;
+ stateSet = mPressed ? KEY_STATE_PRESSED : KEY_STATE_NORMAL;
+ break;
}
+ background.setState(stateSet);
+ return background;
}
public static class Spacer extends Key {