玩会儿Compose,原神主题列表

Jetpack Compose出来有一段时间了,一直都没有去尝试,这次有点想法去玩一玩这个声明性界面工具,就以“原神”为主题写个列表吧。

整体设计参考DisneyCompose

效果图:

image.png

image.png

数据源

因为数据比较简单,也就只包含图片、姓名、描述等。所以在后台数据存储上选择的是Bmob后端云,一个方便前端开发的后端服务平台。

主要数据也是从原神各大网站搜集下来的,新建表结构并且将数据填充,我们简单看一下Bmob的后台。

image.png

数据准备好了,那就开始我们的Compose之旅。

首页UI绘制

整体结构

从上面的项目效果图来看,首页总布局属于是一个网格列表,平分两格,列表中的每个Item上方带有头像,头像下面是角色名称以及角色其他信息。

image.png

网格布局

因为整体分成两列,所以选择的是网格布局,Compose提供了一个实现-LazyVerticalGrid

fun LazyVerticalGrid(
    cells: GridCells,
    modifier: Modifier = Modifier,
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    content: LazyGridScope.() -> Unit
)

LazyVerticalGrid中有几个重要参数先说明一下:

  • GridCells :主要控制如何将单元格构建为列,如GridCells.Fixed(2),表示两列平分。
  • Modifier : 主要用来对列表进行额外的修饰。
  • PaddingValues :主要设置围绕整个内容的padding。
  • LazyListState :用来控制或观察列表状态的状态对象

首页布局是平分两列的网格布局,那相应的代码如下:

LazyVerticalGrid(cells = GridCells.Fixed(2)) {}

单个Item

看过了外部框架,那现在来看每个Item的布局。每个Item为卡片式,外边框为圆角,且带有阴影。内部上方是一张图片Image,图片下方是两行文字Text。那Item具体该怎样布局?

我们先来看看在Compose之前,在xml中是怎么写?例如使用ConstraintLayout布局,顶部放一个ImageView,再来一个TextView layout_constraintTop_toBottomOf ImageView,最后在来个TextViewTopToBottomOf第一个TextView

那使用Compose应该怎么写?

其实在Compose里也存在着ConstraintLayout布局并且具体Api的调用思路与在xml中使用也是一致的。我们就来看看具体操作。

ConstraintLayout() {
Image()
Text()
Text()
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在计算机科学中,Compose 弧形列表是一种数据构,用于表示一系列的函数组合。它是函数式编程中的一个重要概念。 Compose 弧形列表由多个函数组成,每个函数都接受一个参数并返回一个结果。这些函数按照顺序依次应用于输入值,每个函数的输出作为下一个函数的输入。最终的结果是将所有函数依次应用于输入值后得到的输出。 Compose 弧形列表的优点在于它可以将多个简单的函数组合成一个复杂的函数,提高代码的可读性和可维护性。通过使用Compose 弧形列表,可以将函数的组合过程清晰地表达出来,而不需要嵌套多层函数调用。 以下是Compose 弧形列表的示例代码: ```python def compose(*functions): def inner(arg): result = arg for f in reversed(functions): result = f(result) return result return inner # 定义一些简单的函数 def add_one(x): return x + 1 def multiply_by_two(x): return x * 2 def square(x): return x ** 2 # 创建一个Compose 弧形列表 composed_function = compose(square, multiply_by_two, add_one) # 应用Compose 弧形列表 result = composed_function(3) print(result) # 输出:64 ``` 在上面的示例中,我们定义了三个简单的函数:add_one、multiply_by_two 和 square。然后,我们使用compose函数将它们组合成一个Compose 弧形列表,并将这个Compose 弧形列表应用于输入值3。最终的结果是64,这是将3依次经过add_one、multiply_by_two 和 square三个函数得到的输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值