aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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();