diff options
| author | Jules Aguillon | 2021-04-29 00:59:19 +0200 |
|---|---|---|
| committer | Jules Aguillon | 2021-04-29 01:11:18 +0200 |
| commit | ec5cda0ce6a3de3e77e7f40072a9fde04ac85e94 (patch) | |
| tree | 12602fcd2be35cc32a1760825691abcbddad4f4f | |
| parent | b976f4a791c7314dfffd701c46306edcb262c483 (diff) | |
| download | unexpected-keyboard-ec5cda0ce6a3de3e77e7f40072a9fde04ac85e94.tar.gz unexpected-keyboard-ec5cda0ce6a3de3e77e7f40072a9fde04ac85e94.zip | |
Slightly reduce the size of the bottom row
| -rw-r--r-- | res/xml/azerty.xml | 2 | ||||
| -rw-r--r-- | res/xml/numeric.xml | 2 | ||||
| -rw-r--r-- | res/xml/qwerty.xml | 2 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2View.java | 38 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/KeyboardData.java | 70 |
5 files changed, 60 insertions, 54 deletions
diff --git a/res/xml/azerty.xml b/res/xml/azerty.xml index 63d3e5c..413d1e7 100644 --- a/res/xml/azerty.xml +++ b/res/xml/azerty.xml @@ -34,7 +34,7 @@ <key key0="n" key1="accent4" key2="ยง" key4="!" /> <key width="2.0" key0="backspace" key2="delete" /> </row> - <row> + <row height="0.95"> <key width="1.8" key0="ctrl" key3="switch_numeric" /> <key width="1.2" key0="alt" key1="fn" key2="change_method" key3="switch_emoji" key4="config" /> <key width="4.0" key0="space" /> diff --git a/res/xml/numeric.xml b/res/xml/numeric.xml index 9716358..aeeafe8 100644 --- a/res/xml/numeric.xml +++ b/res/xml/numeric.xml @@ -25,7 +25,7 @@ <key key0="3" key4="page_down" /> <key width="1.15" key0="backspace" key2="delete" /> </row> - <row> + <row height="0.95"> <key width="1.5" key0="ctrl" key3="switch_text" /> <key width="1.5" key0="0" /> <key width="0.75" key0="." key2="," /> diff --git a/res/xml/qwerty.xml b/res/xml/qwerty.xml index dd0fc2d..1a663e5 100644 --- a/res/xml/qwerty.xml +++ b/res/xml/qwerty.xml @@ -34,7 +34,7 @@ <key key0="m" key2=""" key3="'" /> <key width="1.5" key0="backspace" key2="delete" /> </row> - <row> + <row height="0.95"> <key width="1.8" key0="ctrl" key3="switch_numeric" /> <key width="1.2" key0="alt" key1="fn" key2="change_method" key3="switch_emoji" key4="config" /> <key width="4.0" key0="space" /> diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index 16cb85f..508c787 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -196,13 +196,13 @@ public class Keyboard2View extends View private void onTouchDown(float touchX, float touchY, int pointerId) { float y = _config.marginTop - _config.keyHeight; - for (KeyboardData.Row row : _keyboard.getRows()) + for (KeyboardData.Row row : _keyboard.rows) { y += _config.keyHeight; if (touchY < y || touchY >= (y + _config.keyHeight)) continue ; float x = _config.horizontalMargin; - for (KeyboardData.Key key : row.getKeys()) + for (KeyboardData.Key key : row.keys) { x += key.shift * _keyWidth; float keyW = _keyWidth * key.width; @@ -350,51 +350,49 @@ public class Keyboard2View extends View @Override public void onMeasure(int wSpec, int hSpec) { - DisplayMetrics dm = getContext().getResources().getDisplayMetrics(); - int height; - - if (_keyboard.getRows() == null) - height = 0; - else - height = (int)((_config.keyHeight + _config.keyVerticalInterval) - * ((float)_keyboard.getRows().size()) - + _config.marginTop + _config.marginBottom); - setMeasuredDimension(dm.widthPixels, height); - _keyWidth = (getWidth() - (_config.horizontalMargin * 2)) / _keyboard.getKeysWidth(); + DisplayMetrics dm = getContext().getResources().getDisplayMetrics(); + int height; + height = (int)(_config.keyHeight * _keyboard.keysHeight + + _keyboard.rows.size() * _config.keyVerticalInterval + + _config.marginTop + _config.marginBottom); + setMeasuredDimension(dm.widthPixels, height); + _keyWidth = (getWidth() - (_config.horizontalMargin * 2)) / _keyboard.keysWidth; } @Override protected void onDraw(Canvas canvas) { float y = _config.marginTop; - for (KeyboardData.Row row : _keyboard.getRows()) + for (KeyboardData.Row row : _keyboard.rows) { + y += row.shift * _config.keyHeight; float x = _config.horizontalMargin; - for (KeyboardData.Key k : row.getKeys()) + float keyH = row.height * _config.keyHeight; + for (KeyboardData.Key k : row.keys) { x += k.shift * _keyWidth + _config.keyHorizontalInterval; float keyW = _keyWidth * k.width - _config.keyHorizontalInterval; KeyDown keyDown = getKeyDown(k); - _tmpRect.set(x, y, x + keyW, y + _config.keyHeight); + _tmpRect.set(x, y, x + keyW, y + keyH); if (keyDown != null) canvas.drawRect(_tmpRect, _keyDownBgPaint); else canvas.drawRoundRect(_tmpRect, _config.keyRound, _config.keyRound, _keyBgPaint); if (k.key0 != null) - drawLabel(canvas, k.key0, keyW / 2f + x, (_config.keyHeight + _labelTextSize) / 2f + y, + drawLabel(canvas, k.key0, keyW / 2f + x, (keyH + _labelTextSize) / 2f + y, (keyDown != null && (keyDown.flags & KeyValue.FLAG_LOCKED) != 0)); float subPadding = _config.keyPadding; if (k.key1 != null) drawSubLabel(canvas, k.key1, x + subPadding, y + subPadding - _keySubLabelPaint.ascent(), false); if (k.key3 != null) - drawSubLabel(canvas, k.key3, x + subPadding, y + _config.keyHeight - subPadding - _keySubLabelPaint.descent(), false); + drawSubLabel(canvas, k.key3, x + subPadding, y + keyH - subPadding - _keySubLabelPaint.descent(), false); if (k.key2 != null) drawSubLabel(canvas, k.key2, x + keyW - subPadding, y + subPadding - _keySubLabelPaint.ascent(), true); if (k.key4 != null) - drawSubLabel(canvas, k.key4, x + keyW - subPadding, y + _config.keyHeight - subPadding - _keySubLabelPaint.descent(), true); + drawSubLabel(canvas, k.key4, x + keyW - subPadding, y + keyH - subPadding - _keySubLabelPaint.descent(), true); x += keyW; } - y += _config.keyHeight + _config.keyVerticalInterval; + y += keyH + _config.keyVerticalInterval; } } diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java index 2356954..ea226ee 100644 --- a/srcs/juloo.keyboard2/KeyboardData.java +++ b/srcs/juloo.keyboard2/KeyboardData.java @@ -6,15 +6,24 @@ import java.util.List; class KeyboardData { - private final List<Row> _rows; - private final float _keysWidth; + public final List<Row> rows; + /* Total width of the keyboard. Unit is abstract. */ + public final float keysWidth; + /* Total height of the keyboard. Unit is abstract. */ + public final float keysHeight; - public KeyboardData(List<Row> rows) + public KeyboardData(List<Row> rows_) { - float kpr = 0.f; - for (Row r : rows) kpr = Math.max(kpr, r.keysWidth()); - _rows = rows; - _keysWidth = kpr; + float kw = 0.f; + float kh = 0.f; + for (Row r : rows_) + { + kw = Math.max(kw, r.keysWidth); + kh += r.height + r.shift; + } + rows = rows_; + keysWidth = kw; + keysHeight = kh; } public static KeyboardData parse(XmlResourceParser parser) @@ -40,7 +49,6 @@ class KeyboardData throw new Exception("Unknow keyboard tag: " + tag); } } - return new KeyboardData(rows); } catch (Exception e) { @@ -49,36 +57,40 @@ class KeyboardData return new KeyboardData(rows); } - public List<Row> getRows() { return _rows; } - - public float getKeysWidth() { return _keysWidth; } - public KeyboardData removeKeys(MapKeys f) { - ArrayList<Row> rows = new ArrayList<Row>(); - for (Row r : _rows) - rows.add(r.removeKeys(f)); - return new KeyboardData(rows); + ArrayList<Row> rows_ = new ArrayList<Row>(); + for (Row r : rows) + rows_.add(r.removeKeys(f)); + return new KeyboardData(rows_); } public static class Row { - private final List<Key> _keys; + public final List<Key> keys; + /* Height of the row. Unit is abstract. */ + public final float height; + /* Extra empty space on the top. */ + public final float shift; /* Total width of very keys. Unit is abstract. */ - private final float _keysWidth; + private final float keysWidth; - public Row(List<Key> keys) + public Row(List<Key> keys_, float h, float s) { float kw = 0.f; - for (Key k : keys) kw += k.width + k.shift; - _keys = keys; - _keysWidth = kw; + for (Key k : keys_) kw += k.width + k.shift; + keys = keys_; + height = h; + shift = s; + keysWidth = kw; } public static Row parse(XmlResourceParser parser) throws Exception { ArrayList<Key> keys = new ArrayList<Key>(); int status; + float h = parser.getAttributeFloatValue(null, "height", 1f); + float shift = parser.getAttributeFloatValue(null, "shift", 0f); while ((status = parser.next()) != XmlResourceParser.END_TAG) { if (status == XmlResourceParser.START_TAG) @@ -90,19 +102,15 @@ class KeyboardData throw new Exception("Unknow row tag: " + tag); } } - return new Row(keys); + return new Row(keys, h, shift); } - public List<Key> getKeys() { return _keys; } - - public float keysWidth() { return _keysWidth; } - public Row removeKeys(MapKeys f) { - ArrayList<Key> keys = new ArrayList<Key>(); - for (Key k : _keys) - keys.add(k.removeKeys(f)); - return new Row(keys); + ArrayList<Key> keys_ = new ArrayList<Key>(); + for (Key k : keys) + keys_.add(k.removeKeys(f)); + return new Row(keys_, height, shift); } } |
