首页 > 其他分享 >jetpack compose 学习

jetpack compose 学习

时间:2022-12-30 12:23:49浏览次数:62  
标签:modifier compose 协程 作用域 jetpack 学习 coil Modifier scrollState

使用列表

fun ScrollingView()相当于recyclerview (原本是ScrollingList)
依赖:用于加载网络图片
implementation 'io.coil-kt:coil-compose:1.4.0'
painter = rememberImagePainter(
data = "https://tse4-mm.cn.bing.net/th/id/OIP-C.W_ojBE429JEt_UbsoDk6YQAAAA?pid=ImgDet&rs=1"),
使用前提是加载网络权限

@Preview
@Composable
fun ScrollingView(){
    val listSize = 100
    val scrollState = rememberLazyListState()
    //协程作用域,作用域消失,则作用域中的协程都会被取消
    val coroutineScope = rememberCoroutineScope()

    Column {

        Row {
            Button(
                modifier = Modifier.weight(1f),
                onClick = {
                    //animateScrollToItem为挂起函数suspend,只能在另一个挂起函数或协程内调用
                    coroutineScope.launch {//拿到协程作用域
                        scrollState.animateScrollToItem(0)
                    }
                }
            ) {
                Text(text = "Scroll to the top")
            }
            Button(
                modifier = Modifier.weight(1f),
                onClick = {
                    coroutineScope.launch {//拿到协程作用域
                        scrollState.animateScrollToItem(listSize-1)
                    }
                }
            ) {
                Text(text = "Scroll to the end")
            }

        }
        LazyColumn(state = scrollState){
            items(listSize){
                ImageListItem(index = it)
            }
        }

    }
}
@Composable
fun ImageListItem(index : Int){
    Row(verticalAlignment = Alignment.CenterVertically) {
        //coil加载网络图片,coil官网2022年12.30日显示的是AsyncImage
        //依赖最新版本2.2.2,但是会报错,和kotlin版本不兼容,调到了2.0.0运行
        AsyncImage(
            model = "https://developer.android.google.cn/images/brand/Android_Robot.png",
            contentDescription = null,
            modifier = Modifier.size(50.dp)
        )

        Spacer(modifier = Modifier.size(10.dp))
        Text(text = "Item # $index", style = MaterialTheme.typography.subtitle1)

    }
}

标签:modifier,compose,协程,作用域,jetpack,学习,coil,Modifier,scrollState
From: https://www.cnblogs.com/vvvv214/p/17014593.html

相关文章

  • JSON学习
    1.JSON语法是JavaScript对象表示语法的子集。l 数据在名称/值对中l 数据由逗号分隔l 花括号保存对象l 方括号保存数组JSON 值可以是:l 数字(整......
  • java学习阶段
    第一阶段:JAVA企业级开发之WEB篇WEB篇HTML5+CSS简介知识点:自定义动画、选择器高级应用、响应式网站开发、行业命名规范、域名注册-搭建个人网站让学员熟练掌握css、js、JQuer......
  • cs231n学习笔记——lecture6 Training Neural Networks
    该博客主要用于个人学习记录,部分内容参考自:[基础]斯坦福cs231n课程视频笔记(三)训练神经网络、【cs231n笔记】10.神经网络训练技巧(上)、CS231n学习笔记-训练神经网络、......
  • 学习淘淘商城第二十七课(内容管理)
    上节课我们一起学习了内容分类管理,包括增加、修改、删除等操作。这节课我们一起学习下内容管理。第一部分:查询内容列表   首先,我们先来看看内容管理后台页面,如下图所......
  • Kruskal重构树 学习笔记
    最小/大瓶颈路在探究何为\(\text{Kruskal}\)重构树之前,我们先要了解何为最小/大瓶颈路。简单来说,\(a\)到\(b\)的最小瓶颈路指的是一条简单路径使得\(a\)到\(b\)......
  • excel的学习2
    excel的学习2列,行宽鼠标放在间隔线位置,按两下鼠标左键,列宽自动配对到合适的位置选中所要同宽的列,然后鼠标放在任何一个间隔线位置设置宽度,所选的列宽就相等啦重复内......
  • 学习笔记之布置简单的云服务器
    最近有个项目需要在云服务器上布置进行测试,因为项目还处于立项阶段,就打算找个免费的云服务器测试一下。测试免费云服务过程记录。(1)安装一个ubuntu16系统,在本地远程登陆服......
  • 学习笔记之免费云服务器
    因为项目需求,了解到了这个sanfengyun网站,可以申请免费虚拟主机和免费云服务器。申请到免费云服务器后,可以看到自己的控制台主页里有所有的信息。(其中网址如下图所示) ......
  • Redis 学习记录
    下载与安装Redisredis......
  • 深度学习基础课:最大池化层的后向传播推导
    大家好~本课程为“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序线上课程资料:本节课录像回放加QQ群,获得......