Kotlin Compose 标准组件

本文探讨了在Android应用中使用Composable组件实现高效布局的方法,重点介绍了如何通过CompositionLocalProvider控制透明度,以及如何优化`PhotographerCard`组件的性能,以减少不必要的测量。
摘要由CSDN通过智能技术生成

 

如果高性能布局的?

通过多次避免多次测量布局子级可实现高性能,如果需要多次进行测量,即固有特性测量

package com.anguomob.jecpack.activity.compose


@Composable
fun PhotographerCard(modifier: Modifier = Modifier) {
    Row(
        modifier = modifier
            .clip(RoundedCornerShape(4.dp))
            .background(color = MaterialTheme.colors.surface)
            .clickable(onClick = {})
            .padding(16.dp)

    ) {
        Surface(
            modifier = Modifier.size(50.dp),
            shape = CircleShape,
            color = MaterialTheme.colors.onSurface.copy(alpha = 0.2f)
        ) {
            Image(
                painter = painterResource(id = R.mipmap.cute),
                contentDescription = null
            )
        }
        Column(modifier = Modifier.padding(start = 8.dp)) {
            Text(text = "Alfred Sisley", fontWeight = FontWeight.Bold)
            CompositionLocalProvider(values = arrayOf(LocalContentAlpha.provides(ContentAlpha.medium))) {
                //里面都是中等透明度 ContentAlpha.medium
                Text(text = "3 minutes ago", style = MaterialTheme.typography.body2)
            }

        }
    }
}

其效果

如果改为这样的话

      .background(color = MaterialTheme.colors.surface)
            .padding(16.dp)

            .clickable(onClick = {})

点击后有水波纹效果但是不是全局的

这需要注意代码的调用顺序

这样才是对的

       modifier = modifier
            .clip(RoundedCornerShape(4.dp))
            .background(color = MaterialTheme.colors.surface)
            .clickable(onClick = {})
            .padding(16.dp)

 

 这里用到了

CompositionLocalProvider

这个是相当于html的css 渲染在外面后 里面所有的投透明度都会被影响掉

 非常的好玩。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值