Jetpack Compose——remember、mutableStateOf、rememberSaveable

1,mutableStateOf:标识这个data是有状态的,如果状态发生了改变,所有引用这个状态的View都需要重新绘制

2,remember:存储值,当界面重新绘制,会读取之前的值,相当于在mutableStateOf 之上又增加了一层内容:把这个变量的值存储脱离函数,即这个函数再次执行这个值并不会变成初始值,但如果页面切换,会失效

3,rememberSaveable:在remember 上保证了可以在页面切换的过程中保存数据
rememberSaveable== remeber + onSaveInstanceState+ onCreate中的read savedInstanceState 
当configChanges的时候,将remember的值写入到bundle中,然后重新构建Activity的时候,从bundle读数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,可以使用 `rememberSaveable` 来保存当前的缩放比例,然后在新的视图中读取该值并将其应用于新视图中的元素。 以下是一个简单的示例代码,展示了如何使用 `rememberSaveable` 和 `LaunchedEffect` 实现这个功能: ```kotlin @Composable fun ZoomableContent() { // 保存当前的缩放比例 var zoom by rememberSaveable { mutableStateOf(1f) } // 保存当前的宽度和高度 var width by remember { mutableStateOf(0) } var height by remember { mutableStateOf(0) } Box( Modifier .fillMaxSize() .zoomable( onZoomChange = { newZoom -> zoom = newZoom }, onSizeChange = { newWidth, newHeight -> width = newWidth height = newHeight } ) ) { // 在 Box 内部添加需要缩放的内容 Text( "Zoom me!", Modifier .width(width.dp) .height(height.dp) .scale(zoom) ) } } @Composable fun ZoomableScreen() { // 在新的视图中读取缩放比例 val zoom by rememberSaveable { mutableStateOf(1f) } LaunchedEffect(Unit) { // 在新的视图中应用缩放比例 zoomableController?.setZoom(zoom) } Box( Modifier .fillMaxSize() .background(Color.Gray) ) { // 添加新的视图 Text("New View", Modifier.align(Alignment.Center)) } } ``` 其中,`zoomable` 是一个自定义的修饰符,用于支持缩放功能。在 `ZoomableContent` 中,我们使用 `Box` 容器来包含需要缩放的内容。在 `ZoomableScreen` 中,我们使用 `rememberSaveable` 来保存缩放比例,并使用 `LaunchedEffect` 在新视图中应用缩放比例。需要注意的是,这里的 `zoomableController` 是一个全局变量,用于管理缩放功能的状态。你需要根据自己的实际需求来实现它。 希望这个示例代码能够帮助你实现你的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值