diff options
| author | Max Schillinger | 2022-02-02 21:46:23 +0100 |
|---|---|---|
| committer | Jules Aguillon | 2022-02-06 23:49:43 +0100 |
| commit | 93edc4ac42f6fb0a59b7bc619a1334fefcfdec22 (patch) | |
| tree | 0f96f5d0ded5b346fa29f3531878e3b300a0258f /srcs/juloo.keyboard2/Keyboard2View.java | |
| parent | 7383cc4b68c20129c9c58730a3d530e7922e8404 (diff) | |
| download | unexpected-keyboard-93edc4ac42f6fb0a59b7bc619a1334fefcfdec22.tar.gz unexpected-keyboard-93edc4ac42f6fb0a59b7bc619a1334fefcfdec22.zip | |
Allow egde keys instead of corner keys (swipe vertically/horizontally)
Add a new boolean parameter "edgekeys" for defining keys that have the
additional (swipe) keys on the edges (top, right, left, bottom) instead
of at the corners (top left, top right, bottom left, bottom right).
Diffstat (limited to 'srcs/juloo.keyboard2/Keyboard2View.java')
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2View.java | 70 |
1 files changed, 54 insertions, 16 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index 49a9ccb..8123144 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -40,6 +40,13 @@ public class Keyboard2View extends View private static RectF _tmpRect = new RectF(); + enum Vertical + { + TOP, + CENTER, + BOTTOM + } + public Keyboard2View(Context context, AttributeSet attrs) { super(context, attrs); @@ -157,13 +164,27 @@ public class Keyboard2View extends View float absDist = Math.abs(moveX) + Math.abs(moveY); key.ptrDist = absDist; if (absDist < _config.swipe_dist_px) + { newValue = key.key.key0; - else if (moveX < 0) - newValue = (moveY < 0) ? key.key.key1 : key.key.key3; - else if (moveY < 0) - newValue = key.key.key2; + } + else if (key.key.edgekeys) + { + if (Math.abs(moveY) > Math.abs(moveX)) // vertical swipe + newValue = (moveY < 0) ? key.key.key1 : key.key.key4; + else if (moveX < 0) // left swipe + newValue = key.key.key3; + else // right swipe + newValue = key.key.key2; + } else - newValue = key.key.key4; + { + if (moveX < 0) + newValue = (moveY < 0) ? key.key.key1 : key.key.key3; + else if (moveY < 0) + newValue = key.key.key2; + else + newValue = key.key.key4; + } if (newValue != null && newValue != key.value) { if (key.timeoutWhat != -1) @@ -368,14 +389,28 @@ public class Keyboard2View extends View if (k.key0 != null) drawLabel(canvas, k.key0, keyW / 2f + x, (keyH + _theme.labelTextSize) / 2f + y, keyDown); float subPadding = _config.keyPadding; - if (k.key1 != null) - drawSubLabel(canvas, k.key1, x + subPadding, y + subPadding, false, true, keyDown); - if (k.key3 != null) - drawSubLabel(canvas, k.key3, x + subPadding, y + keyH - subPadding, false, false, keyDown); - if (k.key2 != null) - drawSubLabel(canvas, k.key2, x + keyW - subPadding, y + subPadding, true, true, keyDown); - if (k.key4 != null) - drawSubLabel(canvas, k.key4, x + keyW - subPadding, y + keyH - subPadding, true, false, keyDown); + if (k.edgekeys) + { + if (k.key1 != null) // top key + drawSubLabel(canvas, k.key1, x + keyW / 2f, y + subPadding, Paint.Align.CENTER, Vertical.TOP, keyDown); + if (k.key3 != null) // left key + drawSubLabel(canvas, k.key3, x + subPadding, y + keyH / 2f, Paint.Align.LEFT, Vertical.CENTER, keyDown); + if (k.key2 != null) // right key + drawSubLabel(canvas, k.key2, x + keyW - subPadding, y + keyH / 2f, Paint.Align.RIGHT, Vertical.CENTER, keyDown); + if (k.key4 != null) // bottom key + drawSubLabel(canvas, k.key4, x + keyW / 2f, y + keyH - subPadding, Paint.Align.CENTER, Vertical.BOTTOM, keyDown); + } + else + { + if (k.key1 != null) // top left key + drawSubLabel(canvas, k.key1, x + subPadding, y + subPadding, Paint.Align.LEFT, Vertical.TOP, keyDown); + if (k.key3 != null) // bottom left key + drawSubLabel(canvas, k.key3, x + subPadding, y + keyH - subPadding, Paint.Align.LEFT, Vertical.BOTTOM, keyDown); + if (k.key2 != null) // top right key + drawSubLabel(canvas, k.key2, x + keyW - subPadding, y + subPadding, Paint.Align.RIGHT, Vertical.TOP, keyDown); + if (k.key4 != null) // bottom right key + drawSubLabel(canvas, k.key4, x + keyW - subPadding, y + keyH - subPadding, Paint.Align.RIGHT, Vertical.BOTTOM, keyDown); + } x += _keyWidth * k.width; } y += row.height * _config.keyHeight; @@ -413,13 +448,16 @@ public class Keyboard2View extends View canvas.drawText(k.symbol, x, y, p); } - private void drawSubLabel(Canvas canvas, KeyValue k, float x, float y, boolean right, boolean up, KeyDown keyDown) + private void drawSubLabel(Canvas canvas, KeyValue k, float x, float y, Paint.Align a, Vertical v, KeyDown keyDown) { k = KeyModifier.handleFlags(k, _flags); - Paint p = _theme.subLabelPaint(((k.flags & KeyValue.FLAG_KEY_FONT) != 0), right); + Paint p = _theme.subLabelPaint(((k.flags & KeyValue.FLAG_KEY_FONT) != 0), a); p.setColor(labelColor(k, keyDown, _theme.subLabelColor)); p.setTextSize(_theme.sublabelTextSize * scaleTextSize(k)); - y -= up ? p.ascent() : p.descent(); + if (v == Vertical.CENTER) + y -= (p.ascent() + p.descent()) / 2f; + else + y -= (v == Vertical.TOP) ? p.ascent() : p.descent(); canvas.drawText(k.symbol, x, y, p); } |
