pref: Pad 上更改为居中弹窗

This commit is contained in:
HuanCheng65 2023-10-05 00:05:08 +08:00
parent 884218b50c
commit 46a42746dc
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
2 changed files with 38 additions and 2 deletions

View File

@ -40,9 +40,12 @@ import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.arch.BaseComposeActivity.Companion.LocalWindowSizeClass
import com.huanchengfly.tieba.post.ui.common.theme.compose.ExtendedTheme
import com.huanchengfly.tieba.post.ui.common.windowsizeclass.WindowWidthSizeClass
import com.huanchengfly.tieba.post.ui.widgets.compose.dialogs.AnyPopDialog
import com.huanchengfly.tieba.post.ui.widgets.compose.dialogs.AnyPopDialogProperties
import com.huanchengfly.tieba.post.ui.widgets.compose.dialogs.DirectionState
import com.huanchengfly.tieba.post.ui.widgets.compose.picker.TimePicker
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@ -340,6 +343,7 @@ fun Dialog(
isActiveClose = true
},
)
val windowWidthSizeClass = LocalWindowSizeClass.current.widthSizeClass
AnyPopDialog(
isActiveClose = isActiveClose,
onDismiss = {
@ -348,13 +352,24 @@ fun Dialog(
showDialog = false
},
properties = AnyPopDialogProperties(
direction = if (windowWidthSizeClass == WindowWidthSizeClass.Compact) {
DirectionState.BOTTOM
} else {
DirectionState.CENTER
},
dismissOnBackPress = cancelable,
dismissOnClickOutside = cancelableOnTouchOutside
)
) {
Column(
modifier = modifier
.fillMaxWidth()
.fillMaxWidth(
fraction = if (windowWidthSizeClass == WindowWidthSizeClass.Compact) {
1f
} else {
0.6f
}
)
.padding(16.dp)
.background(
color = ExtendedTheme.colors.windowBackground,

View File

@ -9,8 +9,13 @@ import android.view.WindowManager
import androidx.activity.compose.BackHandler
import androidx.compose.animation.Animatable
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.animation.scaleIn
import androidx.compose.animation.scaleOut
import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutHorizontally
@ -136,6 +141,7 @@ private fun DialogFullScreen(
DirectionState.TOP -> Alignment.TopCenter
DirectionState.LEFT -> Alignment.CenterStart
DirectionState.RIGHT -> Alignment.CenterEnd
DirectionState.CENTER -> Alignment.Center
else -> Alignment.BottomCenter
}
) {
@ -155,12 +161,26 @@ private fun DialogFullScreen(
DirectionState.TOP -> slideInVertically(initialOffsetY = { -it })
DirectionState.LEFT -> slideInHorizontally(initialOffsetX = { -it })
DirectionState.RIGHT -> slideInHorizontally(initialOffsetX = { it })
DirectionState.CENTER -> fadeIn(
animationSpec = spring(stiffness = Spring.StiffnessMediumLow)
) + scaleIn(
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
initialScale = 0.8F
)
else -> slideInVertically(initialOffsetY = { it })
},
exit = when (properties.direction) {
DirectionState.TOP -> fadeOut() + slideOutVertically(targetOffsetY = { -it })
DirectionState.LEFT -> fadeOut() + slideOutHorizontally(targetOffsetX = { -it })
DirectionState.RIGHT -> fadeOut() + slideOutHorizontally(targetOffsetX = { it })
DirectionState.CENTER -> fadeOut(
animationSpec = spring(stiffness = Spring.StiffnessMediumLow)
) + scaleOut(
animationSpec = spring(stiffness = Spring.StiffnessMediumLow),
targetScale = 0.8F
)
else -> fadeOut() + slideOutVertically(targetOffsetY = { it })
}
) {
@ -251,7 +271,8 @@ enum class DirectionState {
TOP,
LEFT,
RIGHT,
BOTTOM
BOTTOM,
CENTER
}
private fun Modifier.clickOutSideModifier(