Max
05/13/2024, 3:55 PMprivate const val IOS_BUTTONS_SCALE_WHEN_PRESSED = 0.96f
val BUTTONS_SCALE_WHEN_PRESSED = if (isiOS) IOS_BUTTONS_SCALE_WHEN_PRESSED else 1f
@Composable
fun Modifier.adaptiveClick(onClick: () -> Unit): Modifier {
if (isiOS) {
val interactionSource = remember { MutableInteractionSource() }
val isPressed by interactionSource.collectIsPressedAsState()
val targetScale = if (isPressed) BUTTONS_SCALE_WHEN_PRESSED else 1f
val scale by animateFloatAsState(targetValue = targetScale)
return this
.clickable(
interactionSource = interactionSource,
indication = null,
onClick = onClick
)
.scale(scale)
} else {
return this.clickable(onClick = onClick)
}
}
Usage:
modifier = Modifier
.fillMaxWidth()
.height(80.dp)
.adaptiveClick { onSelectReasonClicked() }
Colton Idle
05/23/2024, 2:59 PMColton Idle
05/23/2024, 2:59 PMMax
05/27/2024, 8:16 AMmohamed rejeb
06/23/2024, 10:38 AMgraphicsLayer
Modifier instead of scale
to avoid recompositions.Colton Idle
06/23/2024, 3:49 PM