pref: Pad 上更改为居中弹窗
This commit is contained in:
parent
884218b50c
commit
46a42746dc
|
|
@ -40,9 +40,12 @@ import androidx.compose.ui.text.input.ImeAction
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import com.huanchengfly.tieba.post.R
|
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.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.AnyPopDialog
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.compose.dialogs.AnyPopDialogProperties
|
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 com.huanchengfly.tieba.post.ui.widgets.compose.picker.TimePicker
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
@ -340,6 +343,7 @@ fun Dialog(
|
||||||
isActiveClose = true
|
isActiveClose = true
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
val windowWidthSizeClass = LocalWindowSizeClass.current.widthSizeClass
|
||||||
AnyPopDialog(
|
AnyPopDialog(
|
||||||
isActiveClose = isActiveClose,
|
isActiveClose = isActiveClose,
|
||||||
onDismiss = {
|
onDismiss = {
|
||||||
|
|
@ -348,13 +352,24 @@ fun Dialog(
|
||||||
showDialog = false
|
showDialog = false
|
||||||
},
|
},
|
||||||
properties = AnyPopDialogProperties(
|
properties = AnyPopDialogProperties(
|
||||||
|
direction = if (windowWidthSizeClass == WindowWidthSizeClass.Compact) {
|
||||||
|
DirectionState.BOTTOM
|
||||||
|
} else {
|
||||||
|
DirectionState.CENTER
|
||||||
|
},
|
||||||
dismissOnBackPress = cancelable,
|
dismissOnBackPress = cancelable,
|
||||||
dismissOnClickOutside = cancelableOnTouchOutside
|
dismissOnClickOutside = cancelableOnTouchOutside
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth(
|
||||||
|
fraction = if (windowWidthSizeClass == WindowWidthSizeClass.Compact) {
|
||||||
|
1f
|
||||||
|
} else {
|
||||||
|
0.6f
|
||||||
|
}
|
||||||
|
)
|
||||||
.padding(16.dp)
|
.padding(16.dp)
|
||||||
.background(
|
.background(
|
||||||
color = ExtendedTheme.colors.windowBackground,
|
color = ExtendedTheme.colors.windowBackground,
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,13 @@ import android.view.WindowManager
|
||||||
import androidx.activity.compose.BackHandler
|
import androidx.activity.compose.BackHandler
|
||||||
import androidx.compose.animation.Animatable
|
import androidx.compose.animation.Animatable
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
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.core.tween
|
||||||
|
import androidx.compose.animation.fadeIn
|
||||||
import androidx.compose.animation.fadeOut
|
import androidx.compose.animation.fadeOut
|
||||||
|
import androidx.compose.animation.scaleIn
|
||||||
|
import androidx.compose.animation.scaleOut
|
||||||
import androidx.compose.animation.slideInHorizontally
|
import androidx.compose.animation.slideInHorizontally
|
||||||
import androidx.compose.animation.slideInVertically
|
import androidx.compose.animation.slideInVertically
|
||||||
import androidx.compose.animation.slideOutHorizontally
|
import androidx.compose.animation.slideOutHorizontally
|
||||||
|
|
@ -136,6 +141,7 @@ private fun DialogFullScreen(
|
||||||
DirectionState.TOP -> Alignment.TopCenter
|
DirectionState.TOP -> Alignment.TopCenter
|
||||||
DirectionState.LEFT -> Alignment.CenterStart
|
DirectionState.LEFT -> Alignment.CenterStart
|
||||||
DirectionState.RIGHT -> Alignment.CenterEnd
|
DirectionState.RIGHT -> Alignment.CenterEnd
|
||||||
|
DirectionState.CENTER -> Alignment.Center
|
||||||
else -> Alignment.BottomCenter
|
else -> Alignment.BottomCenter
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
|
|
@ -155,12 +161,26 @@ private fun DialogFullScreen(
|
||||||
DirectionState.TOP -> slideInVertically(initialOffsetY = { -it })
|
DirectionState.TOP -> slideInVertically(initialOffsetY = { -it })
|
||||||
DirectionState.LEFT -> slideInHorizontally(initialOffsetX = { -it })
|
DirectionState.LEFT -> slideInHorizontally(initialOffsetX = { -it })
|
||||||
DirectionState.RIGHT -> 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 })
|
else -> slideInVertically(initialOffsetY = { it })
|
||||||
},
|
},
|
||||||
exit = when (properties.direction) {
|
exit = when (properties.direction) {
|
||||||
DirectionState.TOP -> fadeOut() + slideOutVertically(targetOffsetY = { -it })
|
DirectionState.TOP -> fadeOut() + slideOutVertically(targetOffsetY = { -it })
|
||||||
DirectionState.LEFT -> fadeOut() + slideOutHorizontally(targetOffsetX = { -it })
|
DirectionState.LEFT -> fadeOut() + slideOutHorizontally(targetOffsetX = { -it })
|
||||||
DirectionState.RIGHT -> 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 })
|
else -> fadeOut() + slideOutVertically(targetOffsetY = { it })
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
|
|
@ -251,7 +271,8 @@ enum class DirectionState {
|
||||||
TOP,
|
TOP,
|
||||||
LEFT,
|
LEFT,
|
||||||
RIGHT,
|
RIGHT,
|
||||||
BOTTOM
|
BOTTOM,
|
||||||
|
CENTER
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Modifier.clickOutSideModifier(
|
private fun Modifier.clickOutSideModifier(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue