Compose は状態セレクターを実装します (ネイティブのドローアブル選択ラベル効果) InteractionSource

序文

次のようにするだけで、角を丸くしたり、境界線を追加したりするなど、Compose で描画可能な形状を作成するのは非常に便利です。

形:

            Surface(
                shape = MaterialTheme.shapes.large,
                color = Color.Gray,
                modifier = Modifier.size(50.dp)
            ) {
            }

シェイプ+ボーダー:

            Surface(
                shape = MaterialTheme.shapes.large,
                border = BorderStroke(
                    width = 3.dp,
                    color = Color.Yellow,
                ),
                color = Color.Gray,
                modifier = Modifier.size(50.dp)
            ) {
            }

 

ただし、直接選択状態セレクターはありません

文章

そのため、ドキュメントを探してグループの友人に尋ねたところ、状態セレクターとして実行するのが少し簡単であることがわかりました: InteractionSource

 ps: isSelect、isCheck、isEnable 状態があるため、State オブジェクトを使用して簡単に実装できるため、詳細には触れません。

コントロールを押すと色が変わる状態セレクターを実装しましょう

            val interactionSource = remember { MutableInteractionSource() }
            val isPressed by interactionSource.collectIsPressedAsState()//按下的状态
            Text(
                text = "按下我试试试试试试试试试试试试",
                color = if (isPressed) Color.Blue else Color.Cyan,//监听状态设置颜色
                modifier = M.clickable(
                    interactionSource = interactionSource,//设置
                    indication = LocalIndication.current//按下的指示器效果,当前是水波纹,null就没有东西了
                ) {
                    "123".showToast()
                }
            )

正常な状態: 

プレス状態:

良い梱包方法が見つからないだけで、このようにしか使えないようです

 エピローグ

さて、別の記事

This InteractionSource can also monitor drag, focus, and hover events. 詳細については、公式ドキュメント:  InteractionSource | Android Developers (google.cn)を参照してください。

おすすめ

転載: blog.csdn.net/qq_33505109/article/details/124478228