【问题标题】:Is there a 'touch delegate' equivalent in jetpack compose?jetpack compose 中是否有等效的“触摸代表”?
【发布时间】:2021-07-30 05:12:44
【问题描述】:

Android 视图可以有一个触摸代理来增加元素的可点击区域,而不增加它的填充。 jetpack compose 中有类似的东西吗?我找不到可以做到这一点的修饰符。

【问题讨论】:

    标签: android android-jetpack-compose


    【解决方案1】:

    将状态移至父级

    @Composable
    fun ViewScreen() {
        var scale by remember { mutableStateOf(1f) }
        var offset by remember { mutableStateOf(Offset.Zero) }
        var rotation by remember { mutableStateOf(0f) }
    
        Column(
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally,
            modifier = Modifier
                // touch event
                .pointerInput(Unit) {
                    detectTransformGestures(
                        onGesture = { _, pan, gestureZoom, gestureRotate ->
                            scale *= gestureZoom
                            offset = offset.plus(pan)
                            rotation += gestureRotate
                        }
                    )
                }
                .fillMaxSize()
        ) {
            Cube(scale, offset, rotation)
        }
    }
    
    @Composable
    fun Cube(scale: Float, offset: Offset, rotation: Float) {
        Box(
            Modifier
                .graphicsLayer(
                    scaleX = scale,
                    scaleY = scale,
                    rotationZ = rotation,
                    translationX = offset.x,
                    translationY = offset.y
                )
                .background(Color.Blue)
                .size(256.dp)
        )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2022-08-08
      • 2021-07-22
      • 2021-09-12
      相关资源
      最近更新 更多