Compare commits
3 Commits
cbcc2c0dbc
..
v3.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 3637a1e236 | |||
| 84567bebaa | |||
| f70e082104 |
@@ -23,6 +23,7 @@ Every Phase 10 score tracker app on the Play Store falls into one of a few categ
|
|||||||
<img src="assets/screenshots/entry.png" width="200" />
|
<img src="assets/screenshots/entry.png" width="200" />
|
||||||
<img src="assets/screenshots/result.png" width="200" />
|
<img src="assets/screenshots/result.png" width="200" />
|
||||||
<img src="assets/screenshots/leaderboard.png" width="200" />
|
<img src="assets/screenshots/leaderboard.png" width="200" />
|
||||||
|
<img src="assets/screenshots/custom.png" width="200" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
### Foldable / Tablet — Dual Pane
|
### Foldable / Tablet — Dual Pane
|
||||||
@@ -146,4 +147,4 @@ MIT. Do whatever you want with it.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Built with Claude — because the Play Store didn't deserve another ad-infested score tracker.*
|
*Built with Claude — because the people didn't deserve another ad-infested score tracker.*
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ android {
|
|||||||
applicationId = "com.crsmthw.phase10tracker"
|
applicationId = "com.crsmthw.phase10tracker"
|
||||||
minSdk = 35
|
minSdk = 35
|
||||||
targetSdk = 37
|
targetSdk = 37
|
||||||
versionCode = 4
|
versionCode = 6
|
||||||
versionName = "3.0.0"
|
versionName = "3.0.2"
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables {
|
vectorDrawables {
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -11,8 +11,8 @@
|
|||||||
"type": "SINGLE",
|
"type": "SINGLE",
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"versionCode": 4,
|
"versionCode": 6,
|
||||||
"versionName": "3.0.0",
|
"versionName": "3.0.2",
|
||||||
"outputFile": "app-release.apk"
|
"outputFile": "app-release.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ fun GameSetupScreen(
|
|||||||
modifier = Modifier.padding(bottom = 4.dp)
|
modifier = Modifier.padding(bottom = 4.dp)
|
||||||
)
|
)
|
||||||
Text(
|
Text(
|
||||||
"Hold the ≡ handle and drag to reorder. First player is the initial dealer.",
|
"Hold the = handle and drag to reorder. First player is the initial dealer.",
|
||||||
style = MaterialTheme.typography.bodyMedium,
|
style = MaterialTheme.typography.bodyMedium,
|
||||||
color = MaterialTheme.colorScheme.onSurfaceVariant
|
color = MaterialTheme.colorScheme.onSurfaceVariant
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -61,23 +61,24 @@ fun RoundEntryScreen(
|
|||||||
},
|
},
|
||||||
bottomBar = {
|
bottomBar = {
|
||||||
Surface(tonalElevation = 3.dp, shadowElevation = 8.dp) {
|
Surface(tonalElevation = 3.dp, shadowElevation = 8.dp) {
|
||||||
Button(
|
Column(modifier = Modifier.navigationBarsPadding()) {
|
||||||
onClick = {
|
Button(
|
||||||
focusManager.clearFocus()
|
onClick = {
|
||||||
vm.submitRound()
|
focusManager.clearFocus()
|
||||||
},
|
vm.submitRound()
|
||||||
enabled = vm.isValid(),
|
},
|
||||||
modifier = Modifier
|
enabled = vm.isValid(),
|
||||||
.fillMaxWidth()
|
modifier = Modifier
|
||||||
.padding(horizontal = 16.dp)
|
.fillMaxWidth()
|
||||||
.padding(top = 16.dp, bottom = 16.dp)
|
.padding(horizontal = 16.dp)
|
||||||
.navigationBarsPadding()
|
.padding(vertical = 16.dp)
|
||||||
.height(56.dp),
|
.height(56.dp),
|
||||||
shape = MaterialTheme.shapes.large
|
shape = MaterialTheme.shapes.large
|
||||||
) {
|
) {
|
||||||
Icon(Icons.Filled.Check, null)
|
Icon(Icons.Filled.Check, null)
|
||||||
Spacer(Modifier.width(8.dp))
|
Spacer(Modifier.width(8.dp))
|
||||||
Text("Submit Round", style = MaterialTheme.typography.titleMedium)
|
Text("Submit Round", style = MaterialTheme.typography.titleMedium)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,7 +87,11 @@ fun RoundEntryScreen(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.padding(padding)
|
.padding(padding)
|
||||||
// This is the key fix: pushes content up when keyboard appears
|
// Tell Compose the Scaffold padding already consumed those insets,
|
||||||
|
// so imePadding() only adds the *extra* keyboard space — not the
|
||||||
|
// full keyboard height on top of the already-padded bottomBar height.
|
||||||
|
// Without this, the gap = bottomBar height (the double-count).
|
||||||
|
.consumeWindowInsets(padding)
|
||||||
.imePadding(),
|
.imePadding(),
|
||||||
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 12.dp),
|
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 12.dp),
|
||||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 344 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 174 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 258 KiB |
Reference in New Issue
Block a user