Compose实用知识整理

本文主要讲解一些安卓中实用的compose知识,长期更新

防快速点击

说明

防快速点击主要使用 Modifier 操作符来实现,代码如下

代码

@Composable
fun Modifier.avoidRepeatclickable(millis: Long = 500, onClick: () -> Unit): Modifier {
    var timeStamp by remember {
        mutableStateOf(0L)
    }

    return clickable {
        if (System.currentTimeMillis() - timeStamp > millis) {
            onClick()
            timeStamp = System.currentTimeMillis()
        }
    }
}
复制代码

git:github.com/ananananzhu…

效果

gif 中有两个按钮,

  • 第一个使用正常的 clickable,每次点击悲剧都会变色;

  • 第二个按钮使用了我们的防快速点击操作符,500ms 内多次点击之后出发一次背景变色;

compose防快速点击.gif

Compose 中跳转 Activity,并获取返回结果

说明

这里需要使用 ActivityResult Api,compose 专门进行了扩展

需要使用的扩展库如下:

androidx.activity:activity-compose:1.3.0
复制代码

代码

val launcher = rememberLauncherForActivityResult(contract =object : ActivityResultContract<String, String>() {
        override fun parseResult(resultCode: Int, intent: Intent?): String {
           return intent?.getStringExtra("data")?:""
        }

        /**
         * @param compose向Compose中传的数据 ActivityResultContract<String, String>的第一个泛型
         */
        override fun createIntent(context: Context, input: String?): Intent {
            return Intent(context,GenerateActivityResultActivity::class.java).apply {
                putExtra("data",input)
            }
        }
    } , onResult = {result-> //result 是ActivityResultContract<String, String>第二个泛型
        activityResult = result
    })
复制代码

git 地址:github.com/ananananzhu…

效果

Compose跳转到Activity传递参数并获取返回结果.gif

猜你喜欢

转载自juejin.im/post/7079233643658346533