aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2010-10-12 15:02:44 +0900
committerTadashi G. Takaoka <takaoka@google.com>2010-10-17 18:19:42 +0900
commitcd7b7d3e8febcfbcab4628d1fc5b87e809ce56cc (patch)
tree412ac20f6cc943d2c80c7c3aba4f86f5f69bbc67
parent65100ff39cd8f123926175c2b20a3bb1f48b8698 (diff)
downloadlatinime-cd7b7d3e8febcfbcab4628d1fc5b87e809ce56cc.tar.gz
latinime-cd7b7d3e8febcfbcab4628d1fc5b87e809ce56cc.tar.xz
latinime-cd7b7d3e8febcfbcab4628d1fc5b87e809ce56cc.zip
Specify keyboard metrics with physical unit "inch"
Cherrypick I44f3b2eef8086d6e0b0db53d38f08487549060c6 from Gingerbread This change also introduces the key background drawables which has no fixed bottom padding. Instead of relying on bottom padding in drawable, this change also specifies Keyboard.verticalGap with physical unit. Other keyboard related length, distance and size are also specified by physical unit. Bug: 3066107 Change-Id: Ib38355ebfc2f8d5b1d26c4e90eba87196fbeddfa
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.pngbin521 -> 511 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.pngbin783 -> 760 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.pngbin1112 -> 1088 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.pngbin747 -> 730 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.pngbin962 -> 940 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.pngbin1282 -> 1260 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.pngbin481 -> 461 bytes
-rw-r--r--java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.pngbin1643 -> 811 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.pngbin385 -> 377 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.pngbin550 -> 545 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.pngbin813 -> 806 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.pngbin518 -> 514 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.pngbin700 -> 687 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.pngbin950 -> 940 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.pngbin358 -> 355 bytes
-rw-r--r--java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.pngbin530 -> 526 bytes
-rw-r--r--java/res/layout/input_gingerbread.xml1
-rw-r--r--java/res/values-land/dimens.xml14
-rw-r--r--java/res/values-xlarge/dimens.xml28
-rw-r--r--java/res/values/dimens.xml37
-rw-r--r--java/res/xml-da/kbd_qwerty.xml6
-rw-r--r--java/res/xml-da/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-de/kbd_qwerty.xml6
-rw-r--r--java/res/xml-de/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-fr/kbd_qwerty.xml6
-rw-r--r--java/res/xml-fr/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-iw/kbd_qwerty.xml6
-rw-r--r--java/res/xml-iw/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-nb/kbd_qwerty.xml6
-rw-r--r--java/res/xml-nb/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-ru/kbd_qwerty.xml6
-rw-r--r--java/res/xml-ru/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-sr/kbd_qwerty.xml6
-rw-r--r--java/res/xml-sr/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-sv/kbd_qwerty.xml6
-rw-r--r--java/res/xml-sv/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml-xlarge/kbd_qwerty.xml2
-rw-r--r--java/res/xml-xlarge/popup_smileys.xml2
-rw-r--r--java/res/xml/kbd_phone.xml2
-rw-r--r--java/res/xml/kbd_phone_black.xml2
-rw-r--r--java/res/xml/kbd_phone_symbols.xml2
-rw-r--r--java/res/xml/kbd_phone_symbols_black.xml2
-rw-r--r--java/res/xml/kbd_popup_narrow_template.xml2
-rw-r--r--java/res/xml/kbd_popup_template.xml2
-rw-r--r--java/res/xml/kbd_qwerty.xml6
-rw-r--r--java/res/xml/kbd_qwerty_black.xml6
-rw-r--r--java/res/xml/kbd_symbols.xml2
-rw-r--r--java/res/xml/kbd_symbols_black.xml2
-rw-r--r--java/res/xml/kbd_symbols_shift.xml2
-rw-r--r--java/res/xml/kbd_symbols_shift_black.xml2
-rw-r--r--java/res/xml/popup_comma.xml2
-rw-r--r--java/res/xml/popup_domains.xml2
-rw-r--r--java/res/xml/popup_mic.xml2
-rw-r--r--java/res/xml/popup_punctuation.xml2
-rw-r--r--java/res/xml/popup_smileys.xml2
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboard.java65
-rw-r--r--java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java89
57 files changed, 240 insertions, 136 deletions
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
index 0c4820b34..01fc8ca78 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
index 5a20da1db..af4017e2c 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
index 4ec703d6c..4c35aca95 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
index 93322d2e2..174f3452c 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
index 5a9c722ce..1fcbd9a88 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
index 99b6cb170..072753f37 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
index 7dc59bf82..1ad746053 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
index c150341e3..ccd59d5fa 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
index 53fe9c97d..4e337fa08 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
index 649ef9773..fe18497d8 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
index 93f7d87c2..00aab3d5a 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
index 8560b3ba7..ac0bfd3c1 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
index 778abaf24..ea2f35789 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
index 2a23945e5..6195ac0d4 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
index 6af2d8d0c..50cd06ae3 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
index fdaf69966..7ce52f0f5 100644
--- a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
+++ b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
Binary files differ
diff --git a/java/res/layout/input_gingerbread.xml b/java/res/layout/input_gingerbread.xml
index 8f59cae21..73cf0a3fa 100644
--- a/java/res/layout/input_gingerbread.xml
+++ b/java/res/layout/input_gingerbread.xml
@@ -25,6 +25,7 @@
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:paddingBottom="@dimen/keyboard_bottom_padding"
android:background="@drawable/keyboard_dark_background"
android:textStyle="bold"
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 1396bff9b..043f4b363 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -19,13 +19,17 @@
-->
<resources>
- <dimen name="key_height">47dip</dimen>
+ <!-- key_height + key_bottom_gap = popup_key_height -->
+ <dimen name="key_height">0.250in</dimen>
+ <dimen name="key_bottom_gap">0.020in</dimen>
+ <dimen name="popup_key_height">0.270in</dimen>
+ <dimen name="keyboard_bottom_padding">0.0in</dimen>
<dimen name="candidate_strip_height">38dip</dimen>
<dimen name="candidate_strip_fading_edge_length">63dip</dimen>
<dimen name="spacebar_vertical_correction">2dip</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
- <!-- key_height x 1.7 -->
- <dimen name="mini_keyboard_slide_allowance">79.9dip</dimen>
- <!-- -key_height x 1.0 -->
- <dimen name="mini_keyboard_vertical_correction">-47dip</dimen>
+ <!-- popup_key_height x 1.7 -->
+ <dimen name="mini_keyboard_slide_allowance">0.459in</dimen>
+ <!-- popup_key_height x 1.0 -->
+ <dimen name="mini_keyboard_vertical_correction">-0.270in</dimen>
</resources>
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml
index 5674ef628..d2cd6c7d1 100644
--- a/java/res/values-xlarge/dimens.xml
+++ b/java/res/values-xlarge/dimens.xml
@@ -19,18 +19,26 @@
-->
<resources>
- <dimen name="key_height">72dip</dimen>
- <dimen name="candidate_strip_height">46dip</dimen>
- <dimen name="spacebar_vertical_correction">0dip</dimen>
- <dimen name="key_text_size">28sp</dimen>
- <dimen name="key_label_text_size">16sp</dimen>
- <dimen name="key_preview_height">40dip</dimen>
+ <!-- key_height + key_bottom_gap = popup_key_height -->
+ <dimen name="key_height">0.450in</dimen>
+ <dimen name="key_bottom_gap">0.0in</dimen>
+ <dimen name="popup_key_height">0.450in</dimen>
+ <dimen name="keyboard_bottom_padding">0.10in</dimen>
+ <!-- key_height x 1.6 -->
+ <dimen name="key_preview_height">0.720in</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
- <!-- key_height x 1.7 -->
- <dimen name="mini_keyboard_slide_allowance">122.4dip</dimen>
- <!-- -key_height x 1.0 -->
- <dimen name="mini_keyboard_vertical_correction">-72dip</dimen>
+ <!-- popup_key_height x 1.7 -->
+ <dimen name="mini_keyboard_slide_allowance">0.765in</dimen>
+ <!-- popup_key_height x 1.0 -->
+ <dimen name="mini_keyboard_vertical_correction">-0.450in</dimen>
+
+ <dimen name="key_text_size">0.175in</dimen>
+ <dimen name="key_label_text_size">0.100in</dimen>
+ <dimen name="key_preview_text_size_large">0.245in</dimen>
<!-- We use "inch", not "dip" because this value tries dealing with physical distance related
to user's finger. -->
<dimen name="keyboard_vertical_correction">0.0in</dimen>
+
+ <dimen name="candidate_strip_height">46dip</dimen>
+ <dimen name="spacebar_vertical_correction">0dip</dimen>
</resources>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 1378be72c..2fa47ae52 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -19,26 +19,35 @@
-->
<resources>
- <dimen name="key_height">54dip</dimen>
- <dimen name="bubble_pointer_offset">22dip</dimen>
+ <!-- key_height + key_bottom_gap = popup_key_height -->
+ <dimen name="key_height">0.290in</dimen>
+ <dimen name="key_bottom_gap">0.035in</dimen>
+ <dimen name="popup_key_height">0.325in</dimen>
+ <dimen name="keyboard_bottom_padding">0.06in</dimen>
+ <!-- key_height x 1.6 -->
+ <dimen name="key_preview_height">0.464in</dimen>
+ <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
+ <!-- popup_key_height x 1.7 -->
+ <dimen name="mini_keyboard_slide_allowance">0.553in</dimen>
+ <!-- popup_key_height x 1.0 -->
+ <dimen name="mini_keyboard_vertical_correction">-0.325in</dimen>
+
+ <dimen name="key_text_size">0.13in</dimen>
+ <dimen name="key_label_text_size">0.083in</dimen>
+ <dimen name="key_preview_text_size_large">0.236in</dimen>
+ <dimen name="key_preview_offset">0.000in</dimen>
+ <!-- We use "inch", not "dip" because this value tries dealing with physical distance related
+ to user's finger. -->
+ <dimen name="keyboard_vertical_correction">-0.05in</dimen>
+
<dimen name="candidate_strip_height">42dip</dimen>
<dimen name="candidate_strip_fading_edge_length">63dip</dimen>
<dimen name="spacebar_vertical_correction">4dip</dimen>
<!-- If the screen height in landscape is larger than the below value, then the keyboard
will not go into extract (fullscreen) mode. -->
<dimen name="max_height_for_fullscreen">2.5in</dimen>
- <dimen name="key_text_size">22sp</dimen>
- <dimen name="key_label_text_size">14sp</dimen>
- <dimen name="key_preview_offset">0dip</dimen>
- <dimen name="key_preview_height">80dip</dimen>
- <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
- <!-- key_height x 1.7 -->
- <dimen name="mini_keyboard_slide_allowance">91.8dip</dimen>
- <!-- -key_height x 1.0 -->
- <dimen name="mini_keyboard_vertical_correction">-54dip</dimen>
+ <dimen name="bubble_pointer_offset">22dip</dimen>
+
<dimen name="key_hysteresis_distance">0.05in</dimen>
- <!-- We use "inch", not "dip" because this value tries dealing with physical distance related
- to user's finger. -->
- <dimen name="keyboard_vertical_correction">-0.06in</dimen>
<dimen name="candidate_min_touchable_width">0.3in</dimen>
</resources>
diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml
index c66290c62..66771c287 100644
--- a/java/res/xml-da/kbd_qwerty.xml
+++ b/java/res/xml-da/kbd_qwerty.xml
@@ -28,10 +28,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-da/kbd_qwerty_black.xml b/java/res/xml-da/kbd_qwerty_black.xml
index 7f6ffaa2e..d89204ae6 100644
--- a/java/res/xml-da/kbd_qwerty_black.xml
+++ b/java/res/xml-da/kbd_qwerty_black.xml
@@ -28,10 +28,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml
index 5d40d39b7..30d8de0cf 100644
--- a/java/res/xml-de/kbd_qwerty.xml
+++ b/java/res/xml-de/kbd_qwerty.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-de/kbd_qwerty_black.xml b/java/res/xml-de/kbd_qwerty_black.xml
index 9842dd51d..f394c8d02 100644
--- a/java/res/xml-de/kbd_qwerty_black.xml
+++ b/java/res/xml-de/kbd_qwerty_black.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml
index 9b82e824d..9a4a8796b 100644
--- a/java/res/xml-fr/kbd_qwerty.xml
+++ b/java/res/xml-fr/kbd_qwerty.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="a"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-fr/kbd_qwerty_black.xml b/java/res/xml-fr/kbd_qwerty_black.xml
index c3f122fa7..be2befbe8 100644
--- a/java/res/xml-fr/kbd_qwerty_black.xml
+++ b/java/res/xml-fr/kbd_qwerty_black.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="a"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml
index 8ae7187a2..7f66eef56 100644
--- a/java/res/xml-iw/kbd_qwerty.xml
+++ b/java/res/xml-iw/kbd_qwerty.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="ק"
latin:horizontalGap="5%p"
diff --git a/java/res/xml-iw/kbd_qwerty_black.xml b/java/res/xml-iw/kbd_qwerty_black.xml
index 1435e1e13..80ade2020 100644
--- a/java/res/xml-iw/kbd_qwerty_black.xml
+++ b/java/res/xml-iw/kbd_qwerty_black.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="ק"
latin:horizontalGap="5%p"
diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml
index 0efe2a177..96a86b013 100644
--- a/java/res/xml-nb/kbd_qwerty.xml
+++ b/java/res/xml-nb/kbd_qwerty.xml
@@ -28,10 +28,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-nb/kbd_qwerty_black.xml b/java/res/xml-nb/kbd_qwerty_black.xml
index c7bbf943e..4adeb4801 100644
--- a/java/res/xml-nb/kbd_qwerty_black.xml
+++ b/java/res/xml-nb/kbd_qwerty_black.xml
@@ -28,10 +28,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml
index e40982855..57114a8ea 100644
--- a/java/res/xml-ru/kbd_qwerty.xml
+++ b/java/res/xml-ru/kbd_qwerty.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="й"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-ru/kbd_qwerty_black.xml b/java/res/xml-ru/kbd_qwerty_black.xml
index 784f7457f..8f2f599c3 100644
--- a/java/res/xml-ru/kbd_qwerty_black.xml
+++ b/java/res/xml-ru/kbd_qwerty_black.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="й"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml
index 703c188cc..1a657055a 100644
--- a/java/res/xml-sr/kbd_qwerty.xml
+++ b/java/res/xml-sr/kbd_qwerty.xml
@@ -23,10 +23,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="љ"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-sr/kbd_qwerty_black.xml b/java/res/xml-sr/kbd_qwerty_black.xml
index fe80ef676..e4b09c717 100644
--- a/java/res/xml-sr/kbd_qwerty_black.xml
+++ b/java/res/xml-sr/kbd_qwerty_black.xml
@@ -23,10 +23,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="љ"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml
index 24a2e0657..8819159e8 100644
--- a/java/res/xml-sv/kbd_qwerty.xml
+++ b/java/res/xml-sv/kbd_qwerty.xml
@@ -30,10 +30,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-sv/kbd_qwerty_black.xml b/java/res/xml-sv/kbd_qwerty_black.xml
index ec83dec2a..2532fca8c 100644
--- a/java/res/xml-sv/kbd_qwerty_black.xml
+++ b/java/res/xml-sv/kbd_qwerty_black.xml
@@ -30,10 +30,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="9.09%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml
index 740e7f5f2..b72503414 100644
--- a/java/res/xml-xlarge/kbd_qwerty.xml
+++ b/java/res/xml-xlarge/kbd_qwerty.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="7.5%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<!-- This row is intentionally not marked as a top row -->
diff --git a/java/res/xml-xlarge/popup_smileys.xml b/java/res/xml-xlarge/popup_smileys.xml
index cf30a2461..2cfcf741d 100644
--- a/java/res/xml-xlarge/popup_smileys.xml
+++ b/java/res/xml-xlarge/popup_smileys.xml
@@ -23,7 +23,7 @@
latin:keyWidth="7.5%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
<Row
latin:rowEdgeFlags="top"
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index dc88e2b24..17e7ba20b 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="26.67%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_phone_black.xml b/java/res/xml/kbd_phone_black.xml
index 52479459c..6ade277d9 100644
--- a/java/res/xml/kbd_phone_black.xml
+++ b/java/res/xml/kbd_phone_black.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="26.67%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 1400d3670..5062d4707 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="26.67%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_phone_symbols_black.xml b/java/res/xml/kbd_phone_symbols_black.xml
index 8b683cc6c..2a6932a9e 100644
--- a/java/res/xml/kbd_phone_symbols_black.xml
+++ b/java/res/xml/kbd_phone_symbols_black.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="26.67%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_popup_narrow_template.xml b/java/res/xml/kbd_popup_narrow_template.xml
index ed3b13003..23c686e8b 100644
--- a/java/res/xml/kbd_popup_narrow_template.xml
+++ b/java/res/xml/kbd_popup_narrow_template.xml
@@ -22,6 +22,6 @@
android:keyWidth="9.45%p"
android:horizontalGap="0px"
android:verticalGap="0px"
- android:keyHeight="@dimen/key_height"
+ android:keyHeight="@dimen/popup_key_height"
>
</Keyboard>
diff --git a/java/res/xml/kbd_popup_template.xml b/java/res/xml/kbd_popup_template.xml
index cbb705835..f1aa86f39 100644
--- a/java/res/xml/kbd_popup_template.xml
+++ b/java/res/xml/kbd_popup_template.xml
@@ -22,6 +22,6 @@
latin:keyWidth="10%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
</Keyboard>
diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml
index c14c7fa0c..21a7ccb78 100644
--- a/java/res/xml/kbd_qwerty.xml
+++ b/java/res/xml/kbd_qwerty.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml/kbd_qwerty_black.xml b/java/res/xml/kbd_qwerty_black.xml
index e1aa4f323..adb10dcfb 100644
--- a/java/res/xml/kbd_qwerty_black.xml
+++ b/java/res/xml/kbd_qwerty_black.xml
@@ -22,10 +22,12 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
- <Row>
+ <Row
+ latin:rowEdgeFlags="top"
+ >
<Key
latin:keyLabel="q"
latin:keyHintIcon="@drawable/keyboard_hint_1"
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 4cdc53947..4ce9a867b 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_symbols_black.xml b/java/res/xml/kbd_symbols_black.xml
index cb695f534..dedd2da08 100644
--- a/java/res/xml/kbd_symbols_black.xml
+++ b/java/res/xml/kbd_symbols_black.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index e346384aa..52afa38e3 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/kbd_symbols_shift_black.xml b/java/res/xml/kbd_symbols_shift_black.xml
index a15749212..c1bd4e395 100644
--- a/java/res/xml/kbd_symbols_shift_black.xml
+++ b/java/res/xml/kbd_symbols_shift_black.xml
@@ -22,7 +22,7 @@
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
latin:keyWidth="10%p"
latin:horizontalGap="0px"
- latin:verticalGap="0px"
+ latin:verticalGap="@dimen/key_bottom_gap"
latin:keyHeight="@dimen/key_height"
>
<Row
diff --git a/java/res/xml/popup_comma.xml b/java/res/xml/popup_comma.xml
index 4e88f26c4..cef836acd 100644
--- a/java/res/xml/popup_comma.xml
+++ b/java/res/xml/popup_comma.xml
@@ -23,7 +23,7 @@
latin:keyWidth="10%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
<Row
latin:rowEdgeFlags="top|bottom"
diff --git a/java/res/xml/popup_domains.xml b/java/res/xml/popup_domains.xml
index c110ef6c2..5f92e2f74 100644
--- a/java/res/xml/popup_domains.xml
+++ b/java/res/xml/popup_domains.xml
@@ -23,7 +23,7 @@
latin:keyWidth="15%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
<Row
latin:rowEdgeFlags="top|bottom"
diff --git a/java/res/xml/popup_mic.xml b/java/res/xml/popup_mic.xml
index f5ef6eeb0..99c97ce39 100644
--- a/java/res/xml/popup_mic.xml
+++ b/java/res/xml/popup_mic.xml
@@ -23,7 +23,7 @@
latin:keyWidth="10%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
<Row
latin:rowEdgeFlags="top|bottom"
diff --git a/java/res/xml/popup_punctuation.xml b/java/res/xml/popup_punctuation.xml
index ecbf09f72..76572b06a 100644
--- a/java/res/xml/popup_punctuation.xml
+++ b/java/res/xml/popup_punctuation.xml
@@ -23,7 +23,7 @@
latin:keyWidth="10%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
<Row
latin:rowEdgeFlags="top"
diff --git a/java/res/xml/popup_smileys.xml b/java/res/xml/popup_smileys.xml
index 33006f6ec..2f082318a 100644
--- a/java/res/xml/popup_smileys.xml
+++ b/java/res/xml/popup_smileys.xml
@@ -23,7 +23,7 @@
latin:keyWidth="15%p"
latin:horizontalGap="0px"
latin:verticalGap="0px"
- latin:keyHeight="@dimen/key_height"
+ latin:keyHeight="@dimen/popup_key_height"
>
<Row
latin:rowEdgeFlags="top"
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
index e10346570..246df5fc4 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
@@ -86,6 +86,10 @@ public class LatinKeyboard extends BaseKeyboard {
// TODO: generalize for any keyboardId
private boolean mIsBlackSym;
+ // TODO: remove this attribute when either Keyboard.mDefaultVerticalGap or Key.parent becomes
+ // non-private.
+ private final int mVerticalGap;
+
private static final int SHIFT_OFF = 0;
private static final int SHIFT_ON = 1;
private static final int SHIFT_LOCKED = 2;
@@ -133,6 +137,8 @@ public class LatinKeyboard extends BaseKeyboard {
mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
|| xmlLayoutResId == R.xml.kbd_qwerty_black;
mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE);
+ // TODO remove this initialization after cleanup
+ mVerticalGap = super.getVerticalGap();
}
@Override
@@ -168,31 +174,30 @@ public class LatinKeyboard extends BaseKeyboard {
}
public void setImeOptions(Resources res, int mode, int options) {
- if (mEnterKey != null) {
- switch (options & (EditorInfo.IME_MASK_ACTION|EditorInfo.IME_FLAG_NO_ENTER_ACTION)) {
- case EditorInfo.IME_ACTION_GO:
- resetKeyAttributes(mEnterKey, res.getText(R.string.label_go_key));
- break;
- case EditorInfo.IME_ACTION_NEXT:
- resetKeyAttributes(mEnterKey, res.getText(R.string.label_next_key));
- break;
- case EditorInfo.IME_ACTION_DONE:
- resetKeyAttributes(mEnterKey, res.getText(R.string.label_done_key));
- break;
- case EditorInfo.IME_ACTION_SEARCH:
- resetKeyAttributes(mEnterKey, null);
- mEnterKey.iconPreview = res.getDrawable(
- R.drawable.sym_keyboard_feedback_search);
- mEnterKey.icon = res.getDrawable(mIsBlackSym ?
- R.drawable.sym_bkeyboard_search : R.drawable.sym_keyboard_search);
- break;
- case EditorInfo.IME_ACTION_SEND:
- resetKeyAttributes(mEnterKey, res.getText(R.string.label_send_key));
- break;
- }
- // Set the initial size of the preview icon
- setDefaultBounds(mEnterKey.iconPreview);
+ if (mEnterKey == null)
+ return;
+ switch (options & (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION)) {
+ case EditorInfo.IME_ACTION_GO:
+ resetKeyAttributes(mEnterKey, res.getText(R.string.label_go_key));
+ break;
+ case EditorInfo.IME_ACTION_NEXT:
+ resetKeyAttributes(mEnterKey, res.getText(R.string.label_next_key));
+ break;
+ case EditorInfo.IME_ACTION_DONE:
+ resetKeyAttributes(mEnterKey, res.getText(R.string.label_done_key));
+ break;
+ case EditorInfo.IME_ACTION_SEARCH:
+ resetKeyAttributes(mEnterKey, null);
+ mEnterKey.iconPreview = res.getDrawable(R.drawable.sym_keyboard_feedback_search);
+ mEnterKey.icon = res.getDrawable(mIsBlackSym ? R.drawable.sym_bkeyboard_search
+ : R.drawable.sym_keyboard_search);
+ break;
+ case EditorInfo.IME_ACTION_SEND:
+ resetKeyAttributes(mEnterKey, res.getText(R.string.label_send_key));
+ break;
}
+ // Set the initial size of the preview icon
+ setDefaultBounds(mEnterKey.iconPreview);
}
public void enableShiftLock() {
@@ -663,6 +668,7 @@ public class LatinKeyboard extends BaseKeyboard {
return textSize;
}
+ // TODO LatinKey could be static class
class LatinKey extends BaseKeyboard.Key {
// functional normal state (with properties)
@@ -711,6 +717,8 @@ public class LatinKeyboard extends BaseKeyboard {
*/
@Override
public boolean isInside(int x, int y) {
+ // TODO This should be done by parent.isInside(this, x, y)
+ // if Key.parent were protected.
boolean result = LatinKeyboard.this.isInside(this, x, y);
return result;
}
@@ -730,6 +738,15 @@ public class LatinKeyboard extends BaseKeyboard {
}
return super.getCurrentDrawableState();
}
+
+ @Override
+ public int squaredDistanceFrom(int x, int y) {
+ // We should count vertical gap between rows to calculate the center of this Key.
+ final int verticalGap = LatinKeyboard.this.mVerticalGap;
+ final int xDist = this.x + width / 2 - x;
+ final int yDist = this.y + (height + verticalGap) / 2 - y;
+ return xDist * xDist + yDist * yDist;
+ }
}
/**
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java
index 83b761904..660fe0ed0 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardBaseView.java
@@ -47,6 +47,7 @@ import android.widget.PopupWindow;
import android.widget.TextView;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.WeakHashMap;
@@ -158,6 +159,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
// Miscellaneous constants
/* package */ static final int NOT_A_KEY = -1;
private static final int[] LONG_PRESSABLE_STATE_SET = { android.R.attr.state_long_pressable };
+ private static final int NUMBER_HINT_VERTICAL_ADJUSTMENT_PIXEL = -1;
// XML attribute
private int mKeyTextSize;
@@ -178,6 +180,8 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
// Main keyboard
private BaseKeyboard mKeyboard;
private Key[] mKeys;
+ // TODO this attribute should be gotten from Keyboard.
+ private int mKeyboardVerticalGap;
// Key preview popup
private TextView mPreviewText;
@@ -240,6 +244,11 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
private final Paint mPaint;
private final Rect mPadding;
private final Rect mClipRegion = new Rect(0, 0, 0, 0);
+ // This map caches key label text height in pixel as value and key label text size as map key.
+ private final HashMap<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>();
+ // Distance from horizontal center of the key, proportional to key label text height.
+ private final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR = 0.55f;
+ private final String KEY_LABEL_HEIGHT_REFERENCE_CHAR = "H";
private final UIHandler mHandler = new UIHandler();
@@ -468,7 +477,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
mPreviewPopup = new PopupWindow(context);
if (previewLayout != 0) {
mPreviewText = (TextView) inflate.inflate(previewLayout, null);
- mPreviewTextSizeLarge = (int) mPreviewText.getTextSize();
+ mPreviewTextSizeLarge = (int) res.getDimension(R.dimen.key_preview_text_size_large);
mPreviewPopup.setContentView(mPreviewText);
mPreviewPopup.setBackgroundDrawable(null);
} else {
@@ -579,6 +588,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
LatinImeLogger.onSetKeyboard(keyboard);
mKeys = mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(),
-getPaddingTop() + mVerticalCorrection);
+ mKeyboardVerticalGap = (int)getResources().getDimension(R.dimen.key_bottom_gap);
for (PointerTracker tracker : mPointerTrackers) {
tracker.setKeyboard(keyboard, mKeys, mKeyHysteresisDistance);
}
@@ -723,7 +733,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
int dimensionSum = 0;
for (int i = 0; i < length; i++) {
Key key = keys[i];
- dimensionSum += Math.min(key.width, key.height) + key.gap;
+ dimensionSum += Math.min(key.width, key.height + mKeyboardVerticalGap) + key.gap;
}
if (dimensionSum < 0 || length == 0) return;
mKeyDetector.setProximityThreshold((int) (dimensionSum * 1.4f / length));
@@ -775,13 +785,14 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
paint.setColor(mKeyTextColor);
boolean drawSingleKey = false;
if (invalidKey != null && canvas.getClipBounds(clipRegion)) {
- // Is clipRegion completely contained within the invalidated key?
- if (invalidKey.x + kbdPaddingLeft - 1 <= clipRegion.left &&
- invalidKey.y + kbdPaddingTop - 1 <= clipRegion.top &&
- invalidKey.x + invalidKey.width + kbdPaddingLeft + 1 >= clipRegion.right &&
- invalidKey.y + invalidKey.height + kbdPaddingTop + 1 >= clipRegion.bottom) {
- drawSingleKey = true;
- }
+ // TODO we should use Rect.inset and Rect.contains here.
+ // Is clipRegion completely contained within the invalidated key?
+ if (invalidKey.x + kbdPaddingLeft - 1 <= clipRegion.left &&
+ invalidKey.y + kbdPaddingTop - 1 <= clipRegion.top &&
+ invalidKey.x + invalidKey.width + kbdPaddingLeft + 1 >= clipRegion.right &&
+ invalidKey.y + invalidKey.height + kbdPaddingTop + 1 >= clipRegion.bottom) {
+ drawSingleKey = true;
+ }
}
canvas.drawColor(0x00000000, PorterDuff.Mode.CLEAR);
final int keyCount = keys.length;
@@ -797,8 +808,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
String label = key.label == null? null : adjustCase(key.label).toString();
final Rect bounds = keyBackground.getBounds();
- if (key.width != bounds.right ||
- key.height != bounds.bottom) {
+ if (key.width != bounds.right || key.height != bounds.bottom) {
keyBackground.setBounds(0, 0, key.width, key.height);
}
canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop);
@@ -818,22 +828,34 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
}
// For characters, use large font. For labels like "Done", use small font.
+ final int labelSize;
if (label.length() > 1 && key.codes.length < 2) {
- paint.setTextSize(mLabelTextSize);
+ labelSize = mLabelTextSize;
paint.setTypeface(Typeface.DEFAULT_BOLD);
} else {
- paint.setTextSize(mKeyTextSize);
+ labelSize = mKeyTextSize;
paint.setTypeface(mKeyTextStyle);
}
+ paint.setTextSize(labelSize);
+
+ Integer labelHeightValue = mTextHeightCache.get(labelSize);
+ final int labelHeight;
+ if (labelHeightValue != null) {
+ labelHeight = labelHeightValue;
+ } else {
+ Rect textBounds = new Rect();
+ paint.getTextBounds(KEY_LABEL_HEIGHT_REFERENCE_CHAR, 0, 1, textBounds);
+ labelHeight = textBounds.height();
+ mTextHeightCache.put(labelSize, labelHeight);
+ }
+
// Draw a drop shadow for the text
paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor);
- // Draw the text
- canvas.drawText(label,
- (key.width - padding.left - padding.right) / 2
- + padding.left,
- (key.height - padding.top - padding.bottom) / 2
- + (paint.getTextSize() - paint.descent()) / 2 + padding.top,
- paint);
+ final int centerX = (key.width + padding.left - padding.right) / 2;
+ final int centerY = (key.height + padding.top - padding.bottom) / 2;
+ final float baseline = centerY
+ + labelHeight * KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR;
+ canvas.drawText(label, centerX, baseline, paint);
// Turn off drop shadow
paint.setShadowLayer(0, 0, 0, 0);
}
@@ -843,16 +865,22 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
if (icon == null && key.hintIcon != null && drawHintIcon)
icon = key.hintIcon;
if (icon != null) {
- // Hack for key hint icon displaying at the top right corner of the key.
- final int drawableWidth = icon == key.hintIcon
- ? key.width : icon.getIntrinsicWidth();
- final int drawableHeight = icon == key.hintIcon
- ? key.height : icon.getIntrinsicHeight();
-
- final int drawableX = (key.width - padding.left - padding.right
- - drawableWidth) / 2 + padding.left;
- final int drawableY = (key.height - padding.top - padding.bottom
- - drawableHeight) / 2 + padding.top;
+ // Special handing for the upper-right number hint icons
+ final int drawableWidth;
+ final int drawableHeight;
+ final int drawableX;
+ final int drawableY;
+ if (icon == key.hintIcon) {
+ drawableWidth = key.width;
+ drawableHeight = key.height;
+ drawableX = 0;
+ drawableY = NUMBER_HINT_VERTICAL_ADJUSTMENT_PIXEL;
+ } else {
+ drawableWidth = key.icon.getIntrinsicWidth();
+ drawableHeight = key.icon.getIntrinsicHeight();
+ drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2;
+ drawableY = (key.height + padding.top - padding.bottom - drawableHeight) / 2;
+ }
canvas.translate(drawableX, drawableY);
icon.setBounds(0, 0, drawableWidth, drawableHeight);
icon.draw(canvas);
@@ -1020,6 +1048,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
if (key == null)
return;
mInvalidatedKey = key;
+ // TODO we should clean up this and record key's region to use in onBufferDraw.
mDirtyRect.union(key.x + getPaddingLeft(), key.y + getPaddingTop(),
key.x + key.width + getPaddingLeft(), key.y + key.height + getPaddingTop());
onBufferDraw();