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<String,List> = 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 C
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
ompose的葵花宝典,快收藏起来!!!
第一章 初识 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
第二章 Jetpack Compose构建Android UI
1. Android Jetpack Compose 最全上手指南
-
Jetpack Compose 环境准备和Hello World
-
布局
-
使用Material design 设计
-
Compose 布局实时预览
-
……
2. 深入详解 Jetpack Compose | 优化 UI 构建
-
Compose 所解决的问题
-
Composable 函数剖析
-
声明式 UI
-
组合 vs 继承
-
封装
-
重组
-
……
3. 深入详解 Jetpack Compose | 实现原理
-
@Composable 注解意味着什么?
-
执行模式
-
Positional Memoization (位置记忆化)
-
存储参数
-
重组
-
……
第三章 Jetpack Compose 项目实战演练(附Demo)
1. Jetpack Compose应用1
-
开始前的准备
-
创建DEMO
-
遇到的问题
2. Jetpack Compose应用2
3. Jetpack Compose应用做一个倒计时器
- 数据结构