Add click selection on the number picker.
This commit is contained in:
parent
81f71a9aec
commit
5e7be483e2
3 changed files with 12 additions and 3 deletions
|
|
@ -3,6 +3,7 @@ package com.pixelized.rplexicon.ui.composable
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||||
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
|
|
@ -15,15 +16,16 @@ import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Surface
|
import androidx.compose.material3.Surface
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.graphicsLayer
|
import androidx.compose.ui.graphics.graphicsLayer
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.Dp
|
import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.DpSize
|
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.util.lerp
|
import androidx.compose.ui.util.lerp
|
||||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.math.absoluteValue
|
import kotlin.math.absoluteValue
|
||||||
|
|
||||||
@OptIn(ExperimentalFoundationApi::class)
|
@OptIn(ExperimentalFoundationApi::class)
|
||||||
|
|
@ -35,6 +37,7 @@ fun NumberPicker(
|
||||||
from: Int = 0,
|
from: Int = 0,
|
||||||
pager: PagerState,
|
pager: PagerState,
|
||||||
) {
|
) {
|
||||||
|
val scope = rememberCoroutineScope()
|
||||||
VerticalPager(
|
VerticalPager(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.height(height = itemSize * itemAmount)
|
.height(height = itemSize * itemAmount)
|
||||||
|
|
@ -44,7 +47,9 @@ fun NumberPicker(
|
||||||
pageSize = PageSize.Fixed(itemSize),
|
pageSize = PageSize.Fixed(itemSize),
|
||||||
) { index ->
|
) { index ->
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier.size(size = itemSize),
|
modifier = Modifier
|
||||||
|
.clickable { scope.launch { pager.animateScrollToPage(page = index) } }
|
||||||
|
.size(size = itemSize),
|
||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
|
|
@ -76,7 +81,7 @@ private fun NumberPickerPreview() {
|
||||||
LexiconTheme {
|
LexiconTheme {
|
||||||
Surface {
|
Surface {
|
||||||
NumberPicker(
|
NumberPicker(
|
||||||
pager = rememberPagerState(initialPage = 20) { 99 }
|
pager = rememberPagerState(initialPage = 20) { 99 },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
|
@ -44,6 +45,7 @@ fun HandleCounterEditDialog(
|
||||||
onConfirm: (String, Int) -> Unit,
|
onConfirm: (String, Int) -> Unit,
|
||||||
) {
|
) {
|
||||||
dialog.value?.let {
|
dialog.value?.let {
|
||||||
|
val scope = rememberCoroutineScope()
|
||||||
val pager = rememberPagerState(initialPage = it.value) { it.max + 1 }
|
val pager = rememberPagerState(initialPage = it.value) { it.max + 1 }
|
||||||
Dialog(
|
Dialog(
|
||||||
properties = remember { DialogProperties(usePlatformDefaultWidth = false) },
|
properties = remember { DialogProperties(usePlatformDefaultWidth = false) },
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import androidx.compose.runtime.Stable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
|
@ -51,6 +52,7 @@ fun HandleHitPointEditDialog(
|
||||||
onConfirm: (hp: Int, extra: Int) -> Unit,
|
onConfirm: (hp: Int, extra: Int) -> Unit,
|
||||||
) {
|
) {
|
||||||
dialog.value?.let {
|
dialog.value?.let {
|
||||||
|
val scope = rememberCoroutineScope()
|
||||||
val hpPager = rememberPagerState(initialPage = it.value) { it.max + 1 }
|
val hpPager = rememberPagerState(initialPage = it.value) { it.max + 1 }
|
||||||
val extraPager = rememberPagerState(initialPage = it.extra) { 99 }
|
val extraPager = rememberPagerState(initialPage = it.extra) { 99 }
|
||||||
Dialog(
|
Dialog(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue