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

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 的核心所在。

http://www.xdnf.cn/news/860.html

相关文章:

  • 服务器在国外国内用户访问慢会影响谷歌排名吗?
  • Python 写一个带参数的EXE函数
  • SystemVerilog语法之内建数据类型
  • 数字IC后端PR阶段Innovus,ICC,ICC2修复short万能脚本分享
  • 20.3 使用技巧9
  • Linux:权限相关问题
  • 实验六- Linux网络管理
  • 【MySQL】MySQL中的数据类型详解
  • 【React】获取元素距离页面顶部的距离
  • Spark(20)spark和Hadoop的区别
  • 数据赋能(203)——原则与原理——原则方法
  • 应用层核心协议详解:HTTP, HTTPS, RPC 与 Nginx
  • 健康养生,开启新生活
  • 随机深林算法是分类还是回归?
  • Selenium的ActionChains:自动化Web交互的强大工具
  • 棉花糖实验新解
  • 《数据结构之美--双向链表》
  • 第十四届蓝桥杯 2023 C/C++组 飞机降落
  • 快充协议芯片XSP04D支持使用一个Type-C与电脑传输数据和快充取电功能
  • c++_csp-j算法 (4)
  • 国防科大清华城市空间无人机导航推理!GeoNav:赋予多模态大模型地理空间推理能力,实现语言指令导向的空中目标导航
  • LeetCode 热题100题解(Java版本)
  • 设计模式 建造者模式
  • git比较不同分支的不同提交文件差异
  • Floyd算法求解最短路径问题——从零开始的图论讲解(3)
  • ubuntu 22.04 安装和配置 mysql 8.0,设置开机启动
  • 11-DevOps-Jenkins Pipeline流水线作业
  • [SpringMVC]请求响应参数传递
  • 机器学习 Day13 Boosting集成学习方法: Adaboosting和GBDT
  • AOSP Android14 Launcher3——远程窗口动画关键类SurfaceControl详解