Skip to content

Commit 3dc3090

Browse files
committed
refactor(symbol): improve liquid keyboard displaying
1 parent 9c6fe8a commit 3dc3090

File tree

8 files changed

+44
-22
lines changed

8 files changed

+44
-22
lines changed

app/src/main/assets/shared/tongwenfeng.trime.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ liquid_keyboard:
861861
key_height_land: 40 #横屏模式按键高度
862862
single_width: 60 #single类型的按键宽度
863863
vertical_gap: 8 #纵向按键间隙
864-
margin_x: 2 #左右按键间隙的1/2
864+
margin_x: 5 #左右按键间隙的1/2
865865
fixed_key_bar: # 固定按键条
866866
position: bottom # 摆放位置(在滚动区域的……) top|bottom|left|right
867867
keys: # 按键(显示名称为对应的label,不能放太多)

app/src/main/assets/shared/trime.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ liquid_keyboard:
679679
key_height_land: 40 #横屏模式按键高度
680680
single_width: 60 #single类型的按键宽度
681681
vertical_gap: 1 #纵向按键间隙
682-
margin_x: 0.5 #左右按键间隙的1/2
682+
margin_x: 5 #左右按键间隙的1/2
683683
fixed_key_bar: # 固定按键条
684684
position: bottom # 摆放位置(在滚动区域的……) top|bottom|left|right
685685
keys: # 按键(显示名称为对应的label,不能放太多)

app/src/main/java/com/osfans/trime/data/theme/mapper/LiquidKeyboardMapper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ class LiquidKeyboardMapper(
4848
if (map.containsKey("click")) {
4949
val clickText = map["click"] ?: ""
5050
val labelText = map["label"] ?: ""
51-
LiquidKeyboard.KeyItem(clickText, labelText)
51+
keys.add(LiquidKeyboard.KeyItem(clickText, labelText))
5252
} else {
53-
map.forEach { keys.add(LiquidKeyboard.KeyItem(it.value, it.key)) }
53+
map.forEach { keys.add(LiquidKeyboard.KeyItem(it.key, it.value)) }
5454
}
5555
} else if (item is YamlScalar) {
5656
keys.add(LiquidKeyboard.KeyItem(item.content))

app/src/main/java/com/osfans/trime/ime/symbol/LiquidAdapter.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@ package com.osfans.trime.ime.symbol
77

88
import android.content.Context
99
import android.view.ViewGroup
10+
import androidx.constraintlayout.widget.ConstraintLayout
11+
import androidx.core.view.updateLayoutParams
1012
import androidx.recyclerview.widget.RecyclerView
1113
import com.chad.library.adapter4.BaseQuickAdapter
1214
import com.osfans.trime.data.theme.Theme
1315
import com.osfans.trime.data.theme.model.LiquidKeyboard
16+
import com.osfans.trime.ime.core.AutoScaleTextView
17+
import splitties.dimensions.dp
18+
import splitties.views.gravityCenter
1419

1520
class LiquidAdapter(
1621
private val theme: Theme,
@@ -24,7 +29,17 @@ class LiquidAdapter(
2429
context: Context,
2530
parent: ViewGroup,
2631
viewType: Int,
27-
): ViewHolder = ViewHolder(LiquidItemUi(context, theme))
32+
): ViewHolder {
33+
val ui = LiquidItemUi(context, theme)
34+
ui.mainText.apply {
35+
scaleMode = AutoScaleTextView.Mode.Proportional
36+
gravity = gravityCenter
37+
updateLayoutParams {
38+
width = context.dp(theme.liquidKeyboard.singleWidth)
39+
}
40+
}
41+
return ViewHolder(ui)
42+
}
2843

2944
override fun onBindViewHolder(
3045
holder: ViewHolder,

app/src/main/java/com/osfans/trime/ime/symbol/LiquidItemUi.kt

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@ import com.osfans.trime.data.theme.ColorManager
1010
import com.osfans.trime.data.theme.FontManager
1111
import com.osfans.trime.data.theme.Theme
1212
import com.osfans.trime.ime.core.AutoScaleTextView
13+
import com.osfans.trime.ime.keyboard.GestureFrame
1314
import splitties.dimensions.dp
1415
import splitties.views.dsl.constraintlayout.centerInParent
1516
import splitties.views.dsl.constraintlayout.constraintLayout
1617
import splitties.views.dsl.constraintlayout.lParams
1718
import splitties.views.dsl.core.Ui
1819
import splitties.views.dsl.core.add
20+
import splitties.views.dsl.core.lParams
21+
import splitties.views.dsl.core.matchParent
1922
import splitties.views.dsl.core.view
2023
import splitties.views.dsl.core.wrapContent
2124
import splitties.views.setPaddingDp
@@ -34,18 +37,21 @@ class LiquidItemUi(
3437
setTextColor(ColorManager.getColor("key_text_color"))
3538
}
3639

37-
override val root = constraintLayout {
38-
background = ColorManager.getDecorDrawable(
39-
"key_back_color",
40-
"key_border_color",
41-
dp(theme.generalStyle.keyBorder),
42-
dp(theme.generalStyle.roundCorner),
43-
)
44-
add(
45-
mainText,
46-
lParams(wrapContent, wrapContent) {
47-
centerInParent()
48-
},
49-
)
40+
override val root = view(::GestureFrame) {
41+
val content = constraintLayout {
42+
background = ColorManager.getDecorDrawable(
43+
"key_back_color",
44+
"key_border_color",
45+
dp(theme.generalStyle.keyBorder),
46+
dp(theme.generalStyle.roundCorner),
47+
)
48+
add(
49+
mainText,
50+
lParams(wrapContent, wrapContent) {
51+
centerInParent()
52+
},
53+
)
54+
}
55+
add(content, lParams(matchParent, matchParent))
5056
}
5157
}

app/src/main/java/com/osfans/trime/ime/symbol/LiquidLayout.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ class LiquidLayout(
125125

126126
val liquidView =
127127
recyclerView {
128-
val space = dp(3)
128+
val space = dp(theme.liquidKeyboard.marginX.toInt())
129129
addItemDecoration(SpacesItemDecoration(space))
130130
setPadding(space)
131131
}

app/src/main/java/com/osfans/trime/ime/symbol/LiquidTabsUi.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class LiquidTabsUi(
4444

4545
override val root =
4646
view(::GestureFrame) {
47+
minimumWidth = dp(40)
4748
add(
4849
text,
4950
lParams {

app/src/main/java/com/osfans/trime/ime/symbol/LiquidWindow.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import androidx.lifecycle.lifecycleScope
1212
import androidx.recyclerview.widget.StaggeredGridLayoutManager
1313
import com.google.android.flexbox.AlignItems
1414
import com.google.android.flexbox.FlexDirection
15+
import com.google.android.flexbox.FlexWrap
1516
import com.google.android.flexbox.FlexboxLayoutManager
1617
import com.google.android.flexbox.JustifyContent
1718
import com.osfans.trime.daemon.RimeSession
@@ -56,7 +57,7 @@ class LiquidWindow(
5657
private val mainAdapter by lazy {
5758
LiquidAdapter(theme) {
5859
when (currentDataType) {
59-
LiquidData.Type.SYMBOL -> triggerSymbolInput(this.text)
60+
LiquidData.Type.SYMBOL -> triggerSymbolInput(this.altText)
6061
LiquidData.Type.TABS -> {
6162
val realPosition = LiquidData.getTagList()
6263
.indexOfFirst { it.label == this.text }
@@ -80,8 +81,7 @@ class LiquidWindow(
8081
private val mainLayoutManager by lazy {
8182
FlexboxLayoutManager(context).apply {
8283
flexDirection = FlexDirection.ROW
83-
justifyContent = JustifyContent.SPACE_AROUND
84-
alignItems = AlignItems.BASELINE
84+
flexWrap = FlexWrap.WRAP
8585
}
8686
}
8787

0 commit comments

Comments
 (0)