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

Android Kotlin+Compose首个应用

本教程将创建一个简单的基于 Kotlin 语言的 APP,并使用 Compose 来管理 UI。

创建一个基于 Kotlin 的Android 应用

打开 Android Studio,选择New Project来创建一个应用,然后在Phone and Tablet选项卡,选择 Empty Activity,如下图所示。
选择Empty Activity
将应用命名为MyFirstKotlinApp,点击Finish。经过编译生成之后,可以看到如下页面:
第一个Kotlin应用
可见,默认模版中已经包含了一些Compose元素。在 Android Jetpack Compose 中,Compose 函数是构建 UI 的核心。它们使用 @Composable 注解来标记,代表该函数是一个可组合的 UI 单元。而借助 @Preview 注解,您可以在 Android Studio 中预览可组合函数,而无需构建应用并将其安装到 Android 设备或模拟器中。该注解必须用于不接受参数的可组合函数。具体的效果如下图所示:
Preview显示效果

基础代码解析

打开折叠的 MainAcitivity的代码,
在这里插入图片描述
包含了项目工程的基本逻辑。

override fun onCreate(savedInstanceState: Bundle?) {

onCreate 是 Activity 的生命周期方法,当 Activity 被创建时调用。savedInstanceState 用于恢复上一次销毁时保存的状态(可选)。super.onCreate(savedInstanceState)调用父类的方法;enableEdgeToEdge() 用于开启 沉浸式状态栏与导航栏模式(即内容可以绘制到屏幕的边缘),通常配合 Compose 的 Scaffold 或 System UI Controller 使用,获得更现代的界面风格。

setContent {

Jetpack Compose 的入口,表示开始用 Composable 函数来构建 UI。像是以前 setContentView(R.layout.xxx) 的升级版,但是通过代码构建布局。

MyFirstKotlinAppTheme {

应用自定义的主题(颜色、字体、形状等),类似于 XML 中设置 Theme.MaterialComponents.DayNight。通常是自动生成的,在 ui/theme 文件夹下定义。

Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->Greeting(name = "Android",modifier = Modifier.padding(innerPadding))
}

Scaffold 是 Compose 中的一个结构性布局容器,Modifier.fillMaxSize() 让 Scaffold 填满整个屏幕,innerPadding 是 Scaffold 留出的空间,比如状态栏、导航栏或 TopBar 占用的部分。

整个setContent{…} 以及里面那些函数的调用,用的是 Kotlin 的一种高级特性 —— DSL(领域特定语言)+ Lambda 表达式,这正是 Jetpack Compose 的核心所在。

相关文章:

  • SpringBoot整合JWT Token:构建安全无状态认证体系的最佳实践
  • 把dll模块注入到游戏进程的方法_远线程注入
  • 目标检测篇---R-CNN梳理
  • linux驱动框架——i2c驱动模块的probe过程
  • 重构便携钢琴专业边界丨特伦斯便携钢琴V30Pro定义新一代便携电钢琴
  • 120.在 Vue3 中使用 OpenLayers 实现清空删除所有图层功能
  • AI驱动下的企业学习:人力资源视角下的范式重构与价值觉醒
  • 【数据结构和算法】3. 排序算法
  • java多线程的内存可见性问题,volatile是干什么的?
  • 基于Python(Django)+SQLite实现(Web)校园助手
  • Time to event :Kaplan-Meier曲线、Log Rank检验与Shiny R
  • 线上地图导航小程序源码介绍
  • django入门
  • 介绍XML
  • 蓝桥杯 18.分考场
  • 室外摄像头异常自检指南+视频监控系统EasyCVR视频质量诊断黑科技
  • 如何平衡质量与进度的矛盾
  • L1-105 珍惜生命 - java
  • 安卓逆向工程:从APK到内核的层级技术解析
  • 使用json_repair修复大模型的json输出错误
  • 人民热评:大尺度色情语聊、撮合卖淫,社交APP岂止跑偏
  • 沃尔沃中国公开赛夺冠,这是吴阿顺与上海的十年之约
  • 韩国一战机飞行训练中掉落机炮吊舱和空油箱
  • 习近平主席东南亚三国行|元首外交硕果累累 • 一图读懂
  • 遭遇FIFA三个转会窗禁令,申花有苦难言将选择赔偿
  • 在全社会营造浓郁书香氛围,上海市全民阅读工作会议召开