当前位置: 首页 > news >正文

Android Jetpack Compose - enableEdgeToEdge 函数、MaterialTheme 函数、remember 函数

enableEdgeToEdge 函数

@JvmName("enable")@JvmOverloadsfunComponentActivity.enableEdgeToEdge(statusBarStyle:SystemBarStyle=SystemBarStyle.auto(Color.TRANSPARENT,Color.TRANSPARENT),navigationBarStyle:SystemBarStyle=SystemBarStyle.auto(DefaultLightScrim,DefaultDarkScrim)){valview=window.decorViewvalstatusBarIsDark=statusBarStyle.detectDarkMode(view.resources)valnavigationBarIsDark=navigationBarStyle.detectDarkMode(view.resources)valimpl=Impl?:if(Build.VERSION.SDK_INT>=29){EdgeToEdgeApi29()}elseif(Build.VERSION.SDK_INT>=26){EdgeToEdgeApi26()}elseif(Build.VERSION.SDK_INT>=23){EdgeToEdgeApi23()}elseif(Build.VERSION.SDK_INT>=21){EdgeToEdgeApi21()}else{EdgeToEdgeBase()}.also{Impl=it}impl.setUp(statusBarStyle,navigationBarStyle,window,view,statusBarIsDark,navigationBarIsDark)}
  • 在调用 enableEdgeToEdge 函数后,系统状态栏和导航栏会变为透明或半透明,使应用内容可以在其后方显示

MaterialTheme 函数

@Suppress("DEPRECATION_ERROR")@ComposablefunMaterialTheme(colorScheme:ColorScheme=MaterialTheme.colorScheme,shapes:Shapes=MaterialTheme.shapes,typography:Typography=MaterialTheme.typography,content:@Composable()->Unit){valrippleIndication=androidx.compose.material.ripple.rememberRipple()valselectionColors=rememberTextSelectionColors(colorScheme)CompositionLocalProvider(LocalColorScheme provides colorScheme,LocalIndication provides rippleIndication,androidx.compose.material.ripple.LocalRippleTheme provides MaterialRippleTheme,LocalShapes provides shapes,LocalTextSelectionColors provides selectionColors,LocalTypography provides typography,){ProvideTextStyle(value=typography.bodyLarge,content=content)}}
参数说明
colorScheme: ColorScheme主题颜色配置
shapes: Shapes主题形状配置
typography: Typography主题排版配置
content: @Composable () -> UnitCompose 函数类型参数,可以把它理解为一块 UI 内容
例如,传入某个页面的 UI 内容,这块 UI 内容就会自动继承当前 MaterialTheme 样式
Unit 表示这个函数没有实际的返回值

remember 函数

1、基本介绍
  • remember 是一个 Composable 函数,用于在 Composable 函数重组时记住一个值
2、演示
  1. 无参数的 remember 函数
varcountbyremember{mutableStateOf(0)}Button(onClick={count++}){Text("Count:$count")}
  1. 带 key 的 remember
varnamebyremember{mutableStateOf("tom")}valcontent=remember(name){"Hello,$name!"}Button(onClick={if(name=="tom"){name="jerry"}elseif(name=="jerry"){name="tom"}},content={Text(content)})
varnamebyremember{mutableStateOf("tom")}varagebyremember{mutableStateOf(18)}valcontent=remember(name,age){"Hello,$name! You are$ageyears old."}Button(onClick={name="jerry"age=20},content={Text(content)})
3、数据类型状态
  1. 基础类型状态
varinputTextbyremember{mutableStateOf("")}Column{TextField(value=inputText,onValueChange={inputText=it},label={Text(text="请输入内容")})Text("你输入的内容:$inputText")}
varisCheckedbyremember{mutableStateOf(false)}Column{Switch(checked=isChecked,onCheckedChange={isChecked=it})Text("开关状态:${if(isChecked)"开启"else"关闭"}")}
  1. 自定义数据类状态,支持存储自定义数据类,修改时必须赋值新的对象,否则 Compose 无法感知状态变化,因为对象引用未改变
dataclassUser(valid:Int,valname:String,valage:Int)
varuserbyremember{mutableStateOf(User(id=1,name="张三",age=20))}Column{Text("用户ID:${user.id}")Text("用户姓名:${user.name}")Text("用户年龄:${user.age}")Button(onClick={user=user.copy(age=user.age+1)}){Text("年龄 + 1")}}
  1. 集合类型状态,支持存储集合类型,修改时必须赋值新的集合对象,否则 Compose 无法感知状态变化,因为对象引用未改变
varfruitListbyremember{mutableStateOf(listOf("苹果","香蕉","橙子"))}Column{fruitList.forEach{fruit->Text(text=fruit)}Button(onClick={fruitList=fruitList+"葡萄"}){Text("添加葡萄")}}

补充学习

1、尾随 Lambda
(1)基本介绍
  • 当一个函数的最后一个参数是函数类型时,并使用 Lambda 表达式作为参数传递时,可以将 Lambda 表达式放在括号外
(2)演示
funsay_hello(name:String,other_operation:()->Unit):Unit{println("你好,$name")other_operation()}say_hello("张三",{println("今天的天气不错")println("比较适合去旅游")})say_hello("李四"){println("今天的天气不错")println("比较适合去旅游")}
# 输出结果 你好,张三 今天的天气不错 比较适合去旅游 你好,李四 今天的天气不错 比较适合去旅游
funtest(operation:()->Unit):Unit{println("测试开始")operation()println("测试结束")}test{println("测试操作...")}
# 输出结果 测试开始 测试操作... 测试结束
funcustom_compute(operation:(Int,Int)->Int):Unit{println("计算开始")valresult=operation(10,20)println("计算结果:$result")}custom_compute{a,b->a+b}
# 输出结果 计算开始 计算结果:30
传递函数类型参数
  1. 使用 Lambda 表达式
funcustom_compute(operation:(Int,Int)->Int):Unit{println("计算开始")valresult=operation(10,20)println("计算结果:$result")}custom_compute{a,b->a+b}
# 输出结果 计算开始 计算结果:30
  1. 使用函数引用
funcustom_compute(operation:(Int,Int)->Int):Unit{println("计算开始")valresult=operation(10,20)println("计算结果:$result")}funcustom_compute_operation(a:Int,b:Int):Int{returna*b}custom_compute(::custom_compute_operation)
# 输出结果 计算开始 计算结果:200
  1. 使用匿名函数
funcustom_compute(operation:(Int,Int)->Int):Unit{println("计算开始")valresult=operation(10,20)println("计算结果:$result")}custom_compute(fun(a:Int,b:Int):Int{returna-b})
# 输出结果 计算开始 计算结果:-10
http://www.jsqmd.com/news/196985/

相关文章:

  • tiktok for business:广告主语音脚本智能优化建议
  • 贴吧引流贴:有没有人试过这个通义系ASR模型?
  • Windows事件日志中未知usb设备(设备描述)的追踪技巧
  • 法律庭审记录数字化:高准确率ASR系统的价值
  • Markdown编辑器撰写Fun-ASR技术博客的高效方式
  • stack overflow提问:程序员口述错误信息定位bug
  • Fun-ASR识别历史管理功能详解:搜索与导出技巧
  • elasticsearch查询:用自然语言搜索日志数据
  • 开发者必看:Fun-ASR API接口扩展可能性分析
  • 2026年湖南数字营销服务商实力榜单 - 2025年品牌推荐榜
  • Mathtype公式编辑器在ASR论文写作中的应用场景
  • day53(1.4)——leetcode面试经典150
  • packetbeat网络:语音描述流量模式识别异常行为
  • 2026年1月徐州MPP电力管公司推荐榜单分析 - 2025年品牌推荐榜
  • 印象笔记剪藏:网页音频内容一键转文字保存
  • 2025年12月AMP美国建筑大师奖申报服务商选型指南 - 2025年品牌推荐榜
  • grok模式识别:从语音日志提取结构化字段
  • graph关联分析:语音描述实体关系构建知识图谱
  • es客户端工具分页查询操作指南:from/size使用规范
  • 2026年权威发布:2025年长沙数字营销服务顶尖公司推荐榜单 - 2025年品牌推荐榜
  • 2026年长沙数字营销服务商知名排行 - 2025年品牌推荐榜
  • 2026年质量好的北京餐厅装修设计推荐榜单 - 行业平台推荐
  • 浏览器AI战局升温,Mozilla高层换帅后的战略转型
  • 2026年知名的北京餐厅装修设计精选榜单 - 行业平台推荐
  • 2026杭州婚礼场地推荐指南:草坪及户外婚礼场地精选,婚礼堂介绍与一站式婚礼服务汇总 - 栗子测评
  • 没有 iOS 源码的前提下如何进行应用混淆,源码混淆失效后的替代
  • 2026年南京高铁医疗转运机构服务商top5 - 2025年品牌推荐榜
  • 飞书多维表格:语音输入直接更新项目进度状态
  • viber企业通信:跨国团队多语言语音实时转写
  • Fun-ASR支持31种语言识别?官方文档未公开细节揭秘