#每天一个知识点#
Android Studio 内置Compose实时模板系列
操作方式:选中Compose代码片段,输入缩写,按下 Tab 自动包裹
缩写 名称 功能
WC Wrap Column 用 Column {} 包裹选中代码
WR Wrap Row 用 Row {} 包裹选中代码
W Wrap Box 用 Box {} 包裹选中代码
WS Wrap Surface 用 Surface {} 包裹选中代码WCrd Wrap Card 用 Card {} 包裹选中代码
补充:
1. 这一类 Wrap 模板是实时模板(Live Template),不是系统快捷键,靠缩写+Tab触发。
2. 查看/管理位置:Settings → Editor → Live Templates → Compose
3. 配套查看函数全部参数:
Windows: Alt + Enter → Show function parameters
Mac: Option + Enter
#每天一个知识点#
jetpack compose 的有状态示例代码和解析
Jetpack Compose 采用声明式UI,有状态组件核心是状态驱动界面,状态变更自动重组UI,区别于传统View手动刷新。Compose遵循单向状态流,状态尽量上提,由可信数据源持有,UI仅订阅展示,避免状态分散难以维护。
```kotlin
@Composable
fun CounterScreen() {
// remember:组合内保存状态,重组不丢失;mutableStateOf:创建可观察状态
var count by remember { mutableStateOf(0) }
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Text(text = "计数:$count", fontSize = 22.sp)
Button(onClick = { count++ }) {
Text("点我+1")
}
}
}
```
1. mutableStateOf(0) :生成可观察State,是状态载体,值变化会触发订阅该状态的Composable重组。
2. remember {} :记忆函数,绑定到当前组合树节点。界面正常重组(如旋转、重组刷新)时,remember缓存状态,不会反复初始化;页面销毁移除组合树,状态随之清空。
3. by 委托语法:简化 .value 读写,直接读写count等价于state.value。
4. 缺陷:该状态是本地内部状态,仅当前组件持有。屏幕配置变更(旋转Activity),Activity重建,remember状态丢失,无法跨配置持久化。
如果需要旋转保状态,要把状态抽至ViewModel,ViewModel生命周期独立于页面,配置变更不会销毁,搭配StateFlow对外暴露只读状态,实现业务与UI解耦,也是CMP跨平台推荐写法。
本地remember适合轻量临时状态,ViewModel承载页面业务状态,二者分工明确,是Compose状态管理最基础的两套方案。
![[玫瑰]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_103.6c2eed8.png)
![[玫瑰]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_103.6c2eed8.png)
![[玫瑰]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_103.6c2eed8.png)
jetpack compose 的有状态示例代码和解析
Jetpack Compose 采用声明式UI,有状态组件核心是状态驱动界面,状态变更自动重组UI,区别于传统View手动刷新。Compose遵循单向状态流,状态尽量上提,由可信数据源持有,UI仅订阅展示,避免状态分散难以维护。
```kotlin
@Composable
fun CounterScreen() {
// remember:组合内保存状态,重组不丢失;mutableStateOf:创建可观察状态
var count by remember { mutableStateOf(0) }
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Text(text = "计数:$count", fontSize = 22.sp)
Button(onClick = { count++ }) {
Text("点我+1")
}
}
}
```
1. mutableStateOf(0) :生成可观察State,是状态载体,值变化会触发订阅该状态的Composable重组。
2. remember {} :记忆函数,绑定到当前组合树节点。界面正常重组(如旋转、重组刷新)时,remember缓存状态,不会反复初始化;页面销毁移除组合树,状态随之清空。
3. by 委托语法:简化 .value 读写,直接读写count等价于state.value。
4. 缺陷:该状态是本地内部状态,仅当前组件持有。屏幕配置变更(旋转Activity),Activity重建,remember状态丢失,无法跨配置持久化。
如果需要旋转保状态,要把状态抽至ViewModel,ViewModel生命周期独立于页面,配置变更不会销毁,搭配StateFlow对外暴露只读状态,实现业务与UI解耦,也是CMP跨平台推荐写法。
本地remember适合轻量临时状态,ViewModel承载页面业务状态,二者分工明确,是Compose状态管理最基础的两套方案。
![[玫瑰]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_103.6c2eed8.png)
![[玫瑰]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_103.6c2eed8.png)
![[玫瑰]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_103.6c2eed8.png)
展开
评论
1