shape interactions improved

This commit is contained in:
T8RIN
2025-02-19 20:58:48 +03:00
parent 2f6b07bbcd
commit e79ccc54de
6 changed files with 13 additions and 80 deletions

View File

@ -22,9 +22,6 @@ import android.graphics.Bitmap
import android.os.Build
import android.os.Bundle
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.interaction.collectIsPressedAsState
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@ -49,8 +46,6 @@ import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler
@ -226,22 +221,12 @@ class CrashActivity : CrashHandler() {
}
}
Spacer(modifier = Modifier.height(16.dp))
val interactionSource = remember {
MutableInteractionSource()
}
val pressed by interactionSource.collectIsPressedAsState()
val cornerSize by animateDpAsState(
if (pressed) 8.dp
else 24.dp
)
ExpandableItem(
shape = RoundedCornerShape(24.dp),
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
.navigationBarsPadding(),
shape = RoundedCornerShape(cornerSize),
interactionSource = interactionSource,
visibleContent = {
Icon(
imageVector = Icons.Rounded.BugReport,

View File

@ -56,6 +56,7 @@ import ru.tech.imageresizershrinker.core.ui.utils.animation.FancyTransitionEasin
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.EnhancedIconButton
import ru.tech.imageresizershrinker.core.ui.widget.enhanced.hapticsCombinedClickable
import ru.tech.imageresizershrinker.core.ui.widget.modifier.container
import ru.tech.imageresizershrinker.core.ui.widget.modifier.shapeByInteraction
@Composable
fun ExpandableItem(
@ -65,6 +66,7 @@ fun ExpandableItem(
initialState: Boolean = false,
verticalArrangement: Arrangement.Vertical = Arrangement.Top,
shape: Shape = RoundedCornerShape(20.dp),
pressedShape: Shape = RoundedCornerShape(6.dp),
color: Color = Color.Unspecified,
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
canExpand: Boolean = true,
@ -72,6 +74,12 @@ fun ExpandableItem(
onLongClick: (() -> Unit)? = null,
expansionIconContainerColor: Color = Color.Transparent
) {
val shape = shapeByInteraction(
shape = shape,
pressedShape = pressedShape,
interactionSource = interactionSource
)
Column(
Modifier
.animateContentSize(