diff options
author | 2010-12-08 14:36:41 +0900 | |
---|---|---|
committer | 2010-12-08 17:43:29 +0900 | |
commit | 9f01ed51d78d9a236d3c321a00ab74165a34630a (patch) | |
tree | d362ebc3f06430ed22adad666765daf5267a3ce8 /java/src | |
parent | 59cd73b91675a7a791e186ceb0fe73790ff9595b (diff) | |
download | latinime-9f01ed51d78d9a236d3c321a00ab74165a34630a.tar.gz latinime-9f01ed51d78d9a236d3c321a00ab74165a34630a.tar.xz latinime-9f01ed51d78d9a236d3c321a00ab74165a34630a.zip |
Support keyboardHeight and maxKeyboardHeight to Keyboard XML
This change introduces,
- new attribute keyboardHeight to specify default keyboard height.
- new attribute maxKeyboardHeight to specify maximum keyboard height,
usually specified by percentage to the screen height.
- keyHeight attribute is obsoleted
- new attribute rowHeight to specify a row height, can be specifed as
percentage of the keyboard height. And verticalGap is included to
the row height (row height = key height + vertical gap).
Change-Id: I48a2f2661e8a91a998503a847437c1baf1de9b9c
Diffstat (limited to 'java/src')
4 files changed, 37 insertions, 18 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index cd426690b..4cce2a0db 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -139,7 +139,7 @@ public class Key { /** Create an empty key with no attributes. */ public Key(Row row, char letter, int x, int y) { mKeyboard = row.getKeyboard(); - mHeight = row.mDefaultHeight; + mHeight = row.mDefaultHeight - row.mVerticalGap; mGap = row.mDefaultHorizontalGap; mWidth = row.mDefaultWidth - mGap; mEdgeFlags = row.mRowEdgeFlags; @@ -176,14 +176,14 @@ public class Key { TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); mHeight = KeyboardParser.getDimensionOrFraction(a, - R.styleable.Keyboard_keyHeight, - mKeyboard.getKeyboardHeight(), row.mDefaultHeight); + R.styleable.Keyboard_rowHeight, + mKeyboard.getKeyboardHeight(), row.mDefaultHeight) - row.mVerticalGap; mGap = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, - mKeyboard.getKeyboardWidth(), row.mDefaultHorizontalGap); + mKeyboard.getDisplayWidth(), row.mDefaultHorizontalGap); mWidth = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_keyWidth, - mKeyboard.getKeyboardWidth(), row.mDefaultWidth) - mGap; + mKeyboard.getDisplayWidth(), row.mDefaultWidth) - mGap; a.recycle(); a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 6a1d62efe..7641b4d7a 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -122,6 +122,9 @@ public class Keyboard { /** Height of the screen */ private final int mDisplayHeight; + /** Height of keyboard */ + private int mKeyboardHeight; + public final KeyboardId mId; // Variables for pre-computing nearest keys. @@ -248,11 +251,11 @@ public class Keyboard { mDefaultVerticalGap = gap; } - public int getKeyHeight() { + public int getRowHeight() { return mDefaultHeight; } - public void setKeyHeight(int height) { + public void setRowHeight(int height) { mDefaultHeight = height; } @@ -278,14 +281,22 @@ public class Keyboard { return mTotalWidth; } - public int getKeyboardHeight() { + public int getDisplayHeight() { return mDisplayHeight; } - public int getKeyboardWidth() { + public int getDisplayWidth() { return mDisplayWidth; } + public int getKeyboardHeight() { + return mKeyboardHeight; + } + + public void setKeyboardHeight(int height) { + mKeyboardHeight = height; + } + public List<Key> getShiftKeys() { return mShiftKeys; } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java index dd80f0ed0..213eac567 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java @@ -161,12 +161,20 @@ public class KeyboardParser { final Keyboard keyboard = mKeyboard; final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); - final int width = keyboard.getKeyboardWidth(); - final int height = keyboard.getKeyboardHeight(); + final int displayHeight = keyboard.getDisplayHeight(); + final int keyboardHeight = (int)a.getDimension( + R.styleable.Keyboard_keyboardHeight, displayHeight / 2); + final int maxKeyboardHeight = getDimensionOrFraction(a, + R.styleable.Keyboard_maxKeyboardHeight, displayHeight, displayHeight / 2); + // Keyboard height will not exceed maxKeyboardHeight. + final int height = Math.min(keyboardHeight, maxKeyboardHeight); + final int width = keyboard.getDisplayWidth(); + + keyboard.setKeyboardHeight(height); keyboard.setKeyWidth(getDimensionOrFraction(a, R.styleable.Keyboard_keyWidth, width, width / 10)); - keyboard.setKeyHeight(getDimensionOrFraction(a, - R.styleable.Keyboard_keyHeight, height, 50)); + keyboard.setRowHeight(getDimensionOrFraction(a, + R.styleable.Keyboard_rowHeight, height, 50)); keyboard.setHorizontalGap(getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, width, 0)); keyboard.setVerticalGap(getDimensionOrFraction(a, @@ -280,7 +288,7 @@ public class KeyboardParser { final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); final int gap = getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, - mKeyboard.getKeyboardWidth(), 0); + mKeyboard.getDisplayWidth(), 0); a.recycle(); checkEndTag(TAG_SPACER, parser); setSpacer(gap); @@ -494,7 +502,7 @@ public class KeyboardParser { private void endRow() { if (mCurrentRow == null) throw new InflateException("orphant end row tag"); - mCurrentY += mCurrentRow.mVerticalGap + mCurrentRow.mDefaultHeight; + mCurrentY += mCurrentRow.mDefaultHeight; mCurrentRow = null; } diff --git a/java/src/com/android/inputmethod/keyboard/Row.java b/java/src/com/android/inputmethod/keyboard/Row.java index 37fa4e39e..7c158bca0 100644 --- a/java/src/com/android/inputmethod/keyboard/Row.java +++ b/java/src/com/android/inputmethod/keyboard/Row.java @@ -47,7 +47,7 @@ public class Row { public Row(Keyboard keyboard) { this.mKeyboard = keyboard; - mDefaultHeight = keyboard.getKeyHeight(); + mDefaultHeight = keyboard.getRowHeight(); mDefaultWidth = keyboard.getKeyWidth(); mDefaultHorizontalGap = keyboard.getHorizontalGap(); mVerticalGap = keyboard.getVerticalGap(); @@ -56,14 +56,14 @@ public class Row { public Row(Resources res, Keyboard keyboard, XmlResourceParser parser) { this.mKeyboard = keyboard; - final int keyboardWidth = keyboard.getKeyboardWidth(); + final int keyboardWidth = keyboard.getDisplayWidth(); final int keyboardHeight = keyboard.getKeyboardHeight(); TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); mDefaultWidth = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_keyWidth, keyboardWidth, keyboard.getKeyWidth()); mDefaultHeight = KeyboardParser.getDimensionOrFraction(a, - R.styleable.Keyboard_keyHeight, keyboardHeight, keyboard.getKeyHeight()); + R.styleable.Keyboard_rowHeight, keyboardHeight, keyboard.getRowHeight()); mDefaultHorizontalGap = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, keyboardWidth, keyboard.getHorizontalGap()); mVerticalGap = KeyboardParser.getDimensionOrFraction(a, |