Jetpack Compose for Desktop实现复杂的自动布局网格,熬夜整理蚂蚁金服Python高级笔试题

简介: Jetpack Compose for Desktop实现复杂的自动布局网格,熬夜整理蚂蚁金服Python高级笔试题

正文

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常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。


相关文章
|
3月前
|
安全 Java Android开发
探索安卓应用开发的新趋势:Kotlin和Jetpack Compose
在安卓应用开发领域,随着技术的不断进步,新的编程语言和框架层出不穷。Kotlin作为一种现代的编程语言,因其简洁性和高效性正逐渐取代Java成为安卓开发的首选语言。同时,Jetpack Compose作为一个新的UI工具包,提供了一种声明式的UI设计方法,使得界面编写更加直观和灵活。本文将深入探讨Kotlin和Jetpack Compose的特点、优势以及如何结合使用它们来构建现代化的安卓应用。
86 4
|
4月前
|
Python
【Python】Python30个笔试题
本文提供了一份包含30个问题的Python笔试试题集
192 1
|
5月前
|
数据采集 Java C语言
Python面向对象的高级动态可解释型脚本语言简介
Python是一种面向对象的高级动态可解释型脚本语言。
44 3
|
5月前
|
机器学习/深度学习 数据采集 算法
Python编程语言进阶学习:深入探索与高级应用
【7月更文挑战第23天】Python的进阶学习是一个不断探索和实践的过程。通过深入学习高级数据结构、面向对象编程、并发编程、性能优化以及在实际项目中的应用,你将能够更加熟练地运用Python解决复杂问题,并在编程道路上走得更远。记住,理论知识只是基础,真正的成长来自于不断的实践和反思。
|
5月前
|
机器学习/深度学习 数据采集 人工智能
Python 是一种广泛使用的高级编程语言
【7月更文挑战第17天】Python 是一种广泛使用的高级编程语言
57 2
|
5月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
5月前
|
机器学习/深度学习 数据采集 算法
Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战
Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战
|
5月前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
52 1
|
5月前
|
分布式计算 数据可视化 大数据
阿里云大牛熬夜整理的Python大数据小抄,GitHub星标125K!
Python 是一种流行的编程语言,在大数据领域有广泛的应用。Python 拥有丰富的库和工具,可用于数据处理、分析和可视化。 在大数据处理方面,Python 可以与 Hadoop、Spark 等大数据框架集成,实现大规模数据的处理和分析。它也适用于数据清洗、数据转换、数据挖掘等任务。 此外,Python 的数据分析库如 Pandas、NumPy 和 Matplotlib 等,提供了强大的数据处理和可视化功能,使得数据分析变得更加简单和高效。
|
5月前
|
消息中间件 网络协议 网络安全
解锁Python Socket新姿势,进阶篇带你玩转高级网络通信技巧!
【7月更文挑战第26天】掌握Python Socket后,探索网络通信高级技巧。本指南深化Socket编程理解,包括非阻塞I/O以提升并发性能(示例使用`select`),SSL/TLS加密确保数据安全,以及介绍高级网络协议库如HTTP、WebSocket和ZeroMQ,简化复杂应用开发。持续学习,成为网络通信专家!
52 0