正文
import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import kotlin.math.floor class TestUI2 { /** • 测试用数据 */ data class TestData( val id: Int, val name: String, val category: String, val state: String, ) @Composable fun GridView(dataList:MutableList) { //对数据按类别和id排序 dataList.sortWith(compareBy({it.category},{it.id})) /** • 区间宽度,随窗口尺寸变化更新 */ var districtWidth by remember { mutableStateOf(0f) } /** • 每个方框的尺寸 */ val gridBoxWidth:Float=200f /** • 每列方框的数量 */ var everyRowBoxQuantity:Int Column ( modifier = Modifier //可滚动 .verticalScroll(rememberScrollState()) ){ BoxWithConstraints { //获取Column最大宽度 districtWidth=maxWidth.value //计算每列方框的数量 everyRowBoxQuantity=floor(districtWidth/gridBoxWidth).toInt() //类别表 val categoryList:MutableList = mutableListOf() //显示列表,类别-数据列表 val gridList:MutableMap = mutableMapOf() dataList.groupBy { it.category }.forEach { t, u -> categoryList.add(t) gridList.put(t,u) } Column { for(i in gridList){ Text(“种类”+i.key) GridRow(everyRowBoxQuantity,i.value) } } } } } @Composable fun GridRow(everyRowBoxQuantity:Int,rowList:List){ var boxQuantity=everyRowBoxQuantity-1 //至少显示一行 if(boxQuantity<=0)boxQuantity=1 //分配每行box时计数 var i=1 //每行显示的内容 val everyRowList:MutableList = mutableListOf() for(it in rowList){ everyRowList.add(it) //每行分配完成或最后一个元素时,显示Row if(i%boxQuantity0||itrowList.last()) { Row { everyRowList.forEach { GridBox(it) } } everyRowList.clear() } i++ } } @Composable fun GridBox(testData: TestData) { var u:Color=Color.Black //不同的状态显示不同的值 when(testData.state){ “0”->u= Color.Black “1”->u= Color.Blue “2”->u= Color.Green } Box( modifier = Modifier .padding(16.dp) .width(200.dp) .height(130.dp) .background(u) ){ Column { Text(testData.id.toString()) Text(testData.name) } } } }
我正好薅到这本谷歌内部大佬根据实战编写的《Jetpack Compose最全上手指南》,从入门到精通,教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,是你学习Jetpack Compose的葵花宝典,快收藏起来!!!
第一章 初识 Jetpack Compose
1. 为什么我们需要一个新的UI 工具?
2. Jetpack Compose的着重点
- 加速开发
- 强大的UI工具
- 直观的Kotlin API
3. API 设计
4. Compose API 的原则
- 一切都是函数
- 顶层函数(Top-level function)
- 组合优于继承
- 信任单一来源
5. 深入了解Compose
- Core
- Foundation
- Material
6. 插槽API
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。