Skip to content

Commit ee76fbc

Browse files
committed
style(theme): 优化字体样式
1 parent ab7b558 commit ee76fbc

File tree

7 files changed

+52
-33
lines changed

7 files changed

+52
-33
lines changed

app/src/main/java/com/jyn/composecalculator/DateViewModel.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import android.widget.Toast
55
import androidx.compose.runtime.mutableStateOf
66
import androidx.compose.ui.unit.dp
77
import androidx.lifecycle.AndroidViewModel
8-
import com.jyn.composecalculator.Date
98
import com.udojava.evalex.Expression
109
import java.text.SimpleDateFormat
1110
import java.util.*
@@ -27,7 +26,12 @@ class DateViewModel(application: Application) : AndroidViewModel(application) {
2726
var resultText = mutableStateOf("")
2827
var lastInputText = mutableStateOf("")
2928

30-
fun append(text: String) {
29+
fun appendNum(text: String) {
30+
inputText.value = inputText.value + text
31+
}
32+
33+
fun appendCompute(text: String) {
34+
if (!standards(text)) return
3135
inputText.value = inputText.value + text
3236
}
3337

@@ -65,11 +69,17 @@ class DateViewModel(application: Application) : AndroidViewModel(application) {
6569

6670
if (results.size > 10) results.removeFirst()
6771
results.add(0, Date(getNow(), inputText.value, resultText.value))
72+
6873
} catch (e: Exception) {
6974
e.printStackTrace()
7075
Toast.makeText(getApplication(), "计算错误!", Toast.LENGTH_SHORT).show()
7176
}
7277
}
78+
79+
private fun standards(text: String): Boolean {
80+
val doesExist = inputText.value.last().toString() in arrayOf("÷", "×", "-", "+", ".")
81+
return !doesExist
82+
}
7383
}
7484

7585
fun getNow(): String {

app/src/main/java/com/jyn/composecalculator/ui/BottomBtnView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ fun ItemBtn(text: String) {
145145
Text(
146146
text = text,
147147
color = myTheme.textColor,
148-
fontSize = if (isPortrait) 30.sp else 15.sp
148+
fontSize = if (isPortrait) 34.sp else 15.sp
149149
)
150150
}
151151
}

app/src/main/java/com/jyn/composecalculator/ui/TopResultView.kt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.jyn.composecalculator.ui
22

3-
import android.animation.ArgbEvaluator
43
import androidx.activity.OnBackPressedCallback
54
import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
6-
import androidx.compose.animation.animateColorAsState
75
import androidx.compose.foundation.clickable
86
import androidx.compose.foundation.gestures.Orientation
97
import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -15,10 +13,11 @@ import androidx.compose.material.*
1513
import androidx.compose.material.SwipeableDefaults.resistanceConfig
1614
import androidx.compose.material.TabRowDefaults.Divider
1715
import androidx.compose.material3.Surface
18-
import androidx.compose.runtime.*
16+
import androidx.compose.runtime.Composable
17+
import androidx.compose.runtime.DisposableEffect
18+
import androidx.compose.runtime.remember
19+
import androidx.compose.runtime.rememberCoroutineScope
1920
import androidx.compose.ui.Modifier
20-
import androidx.compose.ui.graphics.Color
21-
import androidx.compose.ui.graphics.toArgb
2221
import androidx.compose.ui.platform.LocalConfiguration
2322
import androidx.compose.ui.platform.LocalDensity
2423
import androidx.compose.ui.tooling.preview.Preview
@@ -28,7 +27,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
2827
import com.apkfuns.logutils.LogUtils
2928
import com.jyn.composecalculator.BOTTOM_FRACTION
3029
import com.jyn.composecalculator.DateViewModel
31-
import com.jyn.composecalculator.ui.theme.argbEvaluator
30+
import com.jyn.composecalculator.isPortrait
3231
import com.jyn.composecalculator.ui.theme.myTheme
3332
import com.jyn.composecalculator.ui.view.InputText
3433
import com.jyn.composecalculator.ui.view.ItemText
@@ -119,8 +118,7 @@ fun TextBox(process: Float) {
119118
val viewModel = viewModel<DateViewModel>()
120119
Column(
121120
modifier = Modifier
122-
.fillMaxWidth()
123-
.padding(10.dp),
121+
.fillMaxWidth(),
124122
verticalArrangement = Arrangement.Bottom
125123
) {
126124
LazyColumn(
@@ -151,7 +149,10 @@ fun TextBox(process: Float) {
151149

152150
Box(
153151
modifier = Modifier
154-
.padding(top = 15.dp, bottom = 25.dp * abs(1 - process))
152+
.padding(
153+
top = 10.dp,
154+
bottom = 10.dp
155+
)
155156
.fillMaxWidth()
156157
) {
157158
SlideIndicator(process)

app/src/main/java/com/jyn/composecalculator/ui/util/Calculate.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

app/src/main/java/com/jyn/composecalculator/ui/util/Click.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ import com.jyn.composecalculator.DateViewModel
55
fun textClick(viewModel: DateViewModel, text: String) {
66
when (text) {
77
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "00",
8-
"÷", "×", "-", "+"
9-
-> viewModel.append(text)
8+
-> viewModel.appendNum(text)
9+
"÷", "×", "-", "+",".",
10+
-> viewModel.appendCompute(text)
1011
"D"
1112
-> viewModel.delete()
1213
"C"

app/src/main/java/com/jyn/composecalculator/ui/view/CursorView.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import androidx.compose.runtime.Composable
99
import androidx.compose.ui.Modifier
1010
import androidx.compose.ui.graphics.Color
1111
import androidx.compose.ui.tooling.preview.Preview
12+
import androidx.compose.ui.unit.Dp
1213
import androidx.compose.ui.unit.dp
1314
import com.jyn.composecalculator.isDark
1415

1516
/**
1617
* 光标
1718
*/
18-
@Preview(showBackground = true)
1919
@Composable
20-
fun CursorView() {
20+
fun CursorView(height: Dp) {
2121
val infiniteTransition = rememberInfiniteTransition()
2222
val float = infiniteTransition.animateFloat(
2323
initialValue = 0f, targetValue = 1f, animationSpec = infiniteRepeatable(
@@ -34,7 +34,7 @@ fun CursorView() {
3434
else
3535
Color.Transparent
3636
)
37-
.width(2.dp)
38-
.height(50.dp)
37+
.width(3.dp)
38+
.height(height)
3939
)
4040
}

app/src/main/java/com/jyn/composecalculator/ui/view/ItemTextView.kt

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.jyn.composecalculator.ui.view
22

3+
import androidx.compose.foundation.background
34
import androidx.compose.foundation.horizontalScroll
45
import androidx.compose.foundation.layout.*
56
import androidx.compose.foundation.rememberScrollState
7+
import androidx.compose.foundation.shape.RoundedCornerShape
68
import androidx.compose.foundation.text.selection.SelectionContainer
9+
import androidx.compose.material3.Surface
710
import androidx.compose.material3.Text
811
import androidx.compose.runtime.Composable
912
import androidx.compose.runtime.LaunchedEffect
@@ -12,6 +15,8 @@ import androidx.compose.runtime.remember
1215
import androidx.compose.ui.Alignment
1316
import androidx.compose.ui.Modifier
1417
import androidx.compose.ui.draw.alpha
18+
import androidx.compose.ui.draw.clip
19+
import androidx.compose.ui.draw.shadow
1520
import androidx.compose.ui.graphics.Color
1621
import androidx.compose.ui.layout.onSizeChanged
1722
import androidx.compose.ui.text.ExperimentalTextApi
@@ -25,6 +30,9 @@ import androidx.compose.ui.unit.em
2530
import androidx.compose.ui.unit.sp
2631
import androidx.lifecycle.viewmodel.compose.viewModel
2732
import com.jyn.composecalculator.DateViewModel
33+
import com.jyn.composecalculator.isPortrait
34+
import com.jyn.composecalculator.ui.theme.evaluator
35+
import com.jyn.composecalculator.ui.theme.myTheme
2836

2937

3038
@Composable
@@ -45,8 +53,10 @@ fun InputText(process: Float) {
4553

4654
Column(
4755
modifier = Modifier
48-
.height(viewModel.textBoxHeight * process)
49-
.alpha(process),
56+
.background(evaluator(process, myTheme.bottomBg, myTheme.topBg))
57+
.height(viewModel.textBoxHeight * 1f)
58+
.alpha(1f)
59+
.padding(start = 10.dp, end = 10.dp),
5060
verticalArrangement = Arrangement.Center
5161
) {
5262
Row(verticalAlignment = Alignment.CenterVertically) {
@@ -56,11 +66,12 @@ fun InputText(process: Float) {
5666
.horizontalScroll(inputScrollState)
5767
.onSizeChanged { inputTextWidth.value = it.width },
5868
text = viewModel.inputText.value,
69+
color = myTheme.textColor,
5970
maxLines = 1,
60-
fontSize = 50.sp,
71+
fontSize = if (isPortrait) 50.sp else 25.sp,
6172
textAlign = TextAlign.End,
6273
)
63-
CursorView()
74+
CursorView(if (isPortrait) 50.dp else 25.dp)
6475
}
6576

6677
Text(
@@ -71,7 +82,7 @@ fun InputText(process: Float) {
7182
.horizontalScroll(resultScrollState)
7283
.onSizeChanged { resultTextWidth.value = it.width },
7384
maxLines = 1,
74-
fontSize = 30.sp,
85+
fontSize = if (isPortrait) 30.sp else 15.sp,
7586
color = Color.Gray,
7687
textAlign = TextAlign.End,
7788
)
@@ -82,16 +93,16 @@ fun InputText(process: Float) {
8293
@Composable
8394
fun ItemText(input: String, result: String) {
8495
Column(
85-
modifier = Modifier.padding(top = 30.dp, bottom = 30.dp),
86-
verticalArrangement = Arrangement.Bottom
96+
modifier = Modifier.height(110.dp),
97+
verticalArrangement = Arrangement.Center
8798
) {
8899
Text(
89100
modifier = Modifier.fillMaxWidth(),
90101
text = input,
91-
fontSize = 23.sp,
102+
fontSize = if (isPortrait) 33.sp else 16.sp,
92103
maxLines = 1,
93-
color = Color.Gray,
94104
textAlign = TextAlign.End,
105+
color = myTheme.textColor,
95106
style = TextStyle(
96107
platformStyle = PlatformTextStyle(
97108
includeFontPadding = false
@@ -102,7 +113,8 @@ fun ItemText(input: String, result: String) {
102113
Text(
103114
modifier = Modifier.fillMaxWidth(),
104115
text = result,
105-
fontSize = 33.sp,
116+
color = Color.Gray,
117+
fontSize = if (isPortrait) 23.sp else 12.sp,
106118
maxLines = 1,
107119
textAlign = TextAlign.End,
108120
style = TextStyle(

0 commit comments

Comments
 (0)