繁体   English   中英

Jetpack Compose - 通过调整大小显示 animation

[英]Jetpack Compose - Reveal animation with resizing

通过使用此代码

val composableHeight = 200.dp
var composableWidthPx by remember { mutableStateOf(1000f) }
val composableWidth = with(LocalDensity.current) { composableWidthPx.toDp() }
val draggableState = rememberDraggableState(onDelta = {
    composableWidthPx += it
})
Row(
    modifier = Modifier
        .width(composableWidth)
        .height(composableHeight)
        .padding(48.dp)
        .draggable(draggableState, Orientation.Horizontal)
        .background(Color.Red)
) {
    Icon(
        modifier = Modifier.requiredSize(100.dp),
        imageVector = Icons.Default.Add,
        contentDescription = null
    )
}

我得到以下结果

在此处输入图像描述

我想要的是让Icon保持固定的 position,具有固定的大小,如果我滑过图标,我希望隐藏相应的部分。 所以,这基本上是一个揭示 animation。

关于如何实现它的一些想法?

(你也可以想出一个更好的问题标题。)

编辑:

一些想要的结果的图片:

在此处输入图像描述

在此处输入图像描述

我想出了一些我使用clipToBounds (感谢 Pylyp)和offset的东西。

val composableHeight = 100.dp
var composableWidthPx by remember { mutableStateOf(1000f) }
val composableWidth = with(LocalDensity.current) { composableWidthPx.toDp() }
val draggableState = rememberDraggableState(onDelta = {
    composableWidthPx += it
})
val iconSize = remember { 100.dp }
Row(
    modifier = Modifier
        .padding(48.dp)
        .width(composableWidth)
        .height(composableHeight)
        .draggable(draggableState, Orientation.Horizontal)
        .background(Color.Red)
        .clipToBounds()
) {
    Icon(
        modifier = Modifier
            .requiredSize(iconSize)
            .offset(
                maxOf(0.dp, (iconSize - composableWidth) / 2)
            ),
        imageVector = Icons.Default.Add,
        contentDescription = null
    )
}

在此处输入图像描述

如果有人能想出更好的办法,请这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM