Skip to content

v0.4.0 — 按鍵間距滑桿、尺寸即時生效

Choose a tag to compare

@plateaukao plateaukao released this 22 Aug 06:39
· 31 commits to main since this release

鍵盤的尺寸這版終於調得動了:新增「按鍵間距」滑桿,而且高度與間距都改成即時生效

按鍵間距

鍵面之間的留白本來是寫死的常數,藏在 KeyboardView.onLayout 裡:上下各 6dp、左右 3dp、排距 8dp、鍵距 5dp。一排十顆鍵就有九道 5dp 的縫,加上左右內縮,實際落在指頭下的鍵面比看起來小 —— 窄螢幕上尤其明顯。

新增 keySpacingScale(0–150%,預設 100%)統一縮放這四個值。所有按鍵分頁(字母/數字/符號/注音/九宮格)共用同一段排版程式,一個係數就全涵蓋。

縮小間距的副作用正是想要的效果:rowHeight

(h - padTop - padBottom - rowSpacing × (rowCount - 1)) / rowCount

所以間距調小時鍵盤總高度不變、省下來的空間全部長進鍵面。0% 就是鍵與鍵完全貼合。

即時生效

高度滑桿本來標「重開鍵盤生效」—— 要比較兩個值就得收鍵盤、點輸入框、滑回設定頁,來回好幾趟。間距如果也這樣幾乎沒法調,它是一格一格看差別的東西。

IME 與設定頁在同一個 process,所以不需要 broadcast:註冊 SharedPreferences.OnSharedPreferenceChangeListener 就好。兩個偏好走不同路徑 ——

做法 代價
按鍵間距 requestLayout() onLayout 每次重讀,按鍵物件、組字狀態、目前分頁全部不動
鍵盤高度 setInputView(onCreateInputView()) 整組重建(直接改 layoutParams IME 視窗不會可靠重量測)

高度重建的代價是新 KeyboardView 帶預設值出生,實測時 Enter 鍵從「完成」變回 。補一句 syncSessionState 把 Enter 標籤與 🌐 鍵狀態接回來即可;組字狀態本來就活在引擎裡。

移除 ,,H

,,H 會把一整份使用指南 commit 進你的輸入框 —— 得先送進某個可編輯欄位、看完再自己刪掉,而設定頁本來就有「指令速查」,同一份資訊維護兩處。

這版拿掉引擎裡的 h 分支(連帶少一個保留命令碼),完整說明改放設定頁:基本輸入、空白鍵手勢、鍵盤切換、尺寸調整都在那裡。未知命令的提示改指向設定頁。


APK 簽章與 v0.3.8 相同,可直接覆蓋更新。