首页 > 其他分享 >Jetpack Compose 学习

Jetpack Compose 学习

时间:2024-12-29 21:10:52浏览次数:5  
标签:ui Compose androidx Jetpack 学习 Composable compose UI import

这是 在软件企业文化 最后一节课中 一位同学介绍的一个框架

用于安卓移动开发

目前我的安卓移动开发 应用的框架主要是 flutter 和 uniapp

Jetpack Compose 是 Google 推出的现代 Android UI 工具包,旨在简化和加速用户界面开发。它是一种声明式 UI 框架,允许开发者用更少的代码构建复杂的界面,并且与现有的 Android 应用完全兼容。以下是一些关键概念、特性和使用 Jetpack Compose 开发的基本步骤。

关键概念

  • 声明式UI:不同于传统的命令式编程方式(如在 XML 中定义布局并在 Java/Kotlin 代码中进行操作),Jetpack Compose 使用函数来描述 UI 的状态,当状态变化时,框架会自动更新 UI。

  • Composable 函数:这些是带有 @Composable 注解的函数,用于创建 UI 组件。它们可以嵌套调用其他 Composable 函数以构建层次化的 UI 结构。

  • 状态管理:通过 StateMutableState 类型,可以在 Composable 函数内部或外部定义响应式的数据源。每当状态发生变化时,相关联的 UI 就会自动重新组合(recompose)。

  • 副作用:有时候你需要执行一些不直接依赖于输入参数的操作,比如启动协程、订阅数据流等。Jetpack Compose 提供了 LaunchedEffect, DisposableEffect, rememberUpdatedState 等 API 来处理这类情况。

  • Material Design 支持:内置对 Material Design 组件的支持,包括按钮、文本框、卡片等常用控件,同时也提供了自定义主题的能力。

基本使用步骤

  1. 设置项目

     

    在你的项目中启用 Jetpack Compose,你需要确保 Gradle 文件中包含必要的依赖项。例如,在 build.gradle (Project) 文件中添加:

    gradle 深色版本
    buildscript {
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
            // ...
        }
    }

    并在 build.gradle (Module) 文件中添加:

    gradle 深色版本
    android {
        // ...
        composeOptions {
            kotlinCompilerExtensionVersion '1.5.3'
        }
    }
    
    dependencies {
        implementation "androidx.compose.material:material:1.5.0"
        implementation "androidx.compose.ui:ui:1.5.0"
        implementation "androidx.compose.ui:ui-tooling-preview:1.5.0"
        debugImplementation "androidx.compose.ui:ui-tooling:1.5.0"
        implementation "androidx.activity:activity-compose:1.7.2"
        // ...
    }

    请注意,版本号应根据最新发布情况进行调整。

  2. 创建 Composable 函数

     

    编写一个简单的 Composable 函数,比如显示一个文本组件:

    kotlin 深色版本
    @Composable
    fun Greeting(name: String) {
        Text(text = "Hello $name!")
    }
  3. 集成到 Activity 或 Fragment

     

    在你的主 Activity 中设置内容视图为一个 Composable 函数:

    kotlin 深色版本
    import android.os.Bundle
    import androidx.activity.ComponentActivity
    import androidx.activity.compose.setContent
    import androidx.compose.material.Text
    
    class MainActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContent {
                Greeting("Android")
            }
        }
    }
  4. 运行应用

     

    构建并运行你的应用程序,你应该能够看到由 Greeting Composable 函数生成的 UI。

更多特性

  • 动画:使用 animate*AsState 和 Transition API 创建平滑过渡效果。
  • 手势:利用 Modifier.pointerInput 和 detectTapGestures 等 API 处理触摸事件。
  • 导航:借助 Compose Navigation 库实现页面之间的跳转。
  • 测试:编写单元测试和集成测试来验证 UI 行为。

示例代码

下面是一个稍微复杂一点的例子,展示了如何结合状态管理和用户交互:

kotlin 深色版本
import androidx.compose.foundation.layout.*
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun CounterApp() {
    var count by remember { mutableStateOf(0) }

    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text("Count: $count")
        Spacer(modifier = Modifier.height(8.dp))
        Button(onClick = { count++ }) {
            Text("Increment")
        }
    }
}

这段代码定义了一个计数器应用,其中包含一个显示当前计数值的 Text 组件和一个用于增加计数的 Button。每次点击按钮时,状态变量 count 更新,导致 UI 自动刷新。

使用的是Kotlin 语言 

这些是ai给的 介绍 打算明天具体了解一下

 

标签:ui,Compose,androidx,Jetpack,学习,Composable,compose,UI,import
From: https://www.cnblogs.com/youxiandechilun/p/18639527

相关文章

  • Kubernetes(v1.29)学习笔记
    什么是KubernetesK8s是Kubernetes的简称,是一个开源的容器编排系统,用于自动部署、扩展和管理容器化应用程序。Kubernetes源于希腊语,意为“舵手”或“飞行员”,其主要功能包括服务发现与负载均衡、存储编排、Secret和配置管理、批量执行、水平扩缩、自动化上线和回滚、自动装箱......
  • Docker(4.36)学习笔记
    1.什么是DockerDocker是基于Go语言实现的开源容器引擎,诞生于2013年年初,用于将应用程序及其依赖项打包为容器,以便在云或本地环境中自动部署和运行。Docker通过操作系统层面的虚拟化技术,将软件与其依赖项隔离,确保应用程序能够在不同的环境中一致地运行。Docker的特点容器化:D......
  • Java学习教程,从入门到精通,Java I/O流语法知识点及案例代码(70)
    JavaI/O流语法知识点及案例代码一、JavaI/O流语法知识点I/O流简介I/O(Input/Output)流是Java中用于处理输入和输出数据的机制。允许程序与外部设备(如文件、网络连接、内存等)进行数据交换。I/O流的分类字节流(ByteStreams):以字节为单位进行操作,适用于处理二进制数据或......
  • git学习
    在软件构造课程中看到同学在ppt演讲中提到了git团队合作所以我就去了解了一下 将这次的MES系统上传到github    步骤1:创建一个新的仓库点击“New”按钮:在左侧菜单中,你会看到一个绿色的“New”按钮,点击它。这会引导你创建一个新的仓库。填写仓库信息:......
  • 2024-2025-1 20241319 《计算机基础与程序设计》第十四周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14这个作业的目标《C语言程序设计》第13章作业正文https://www.cnblogs.com/wchxx/p/18639513**教材学习内容总结1.......
  • 学期2024-2025-1学号202413177 《计算机基础与程序设计》第十四周学习总结
    学期2024-2025-1学号202413177《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上具......
  • 2024-2025-1(20241321)《计算机基础与程序设计》第十四周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机基础与程序设计第十四周作业)这个作业的目标<深刻学习C语言,反思一周学习,温故知新>作业正文...本博客链接https://www.cnblogs.com/guc......
  • 学习笔记:旋转treap
    前言更好的阅读体验。无旋treap。默认读者会BST的基本操作、堆和旋转。本文旋转部分和上面那篇文章的相同。代码中是小根堆。思想treap既是一棵二叉查找树(tree),也是一个二叉堆(heap)。但是如果这两个数据结构用同一个权值维护,那么这两种数据结构是矛盾的。所以treap用......
  • 异或线性基学习笔记
    更好的阅读体验。前言本文的线性基指异或线性基。由于作者太菜了本文的语言不会特别规范。简介线性基简称基,它是一个数的集合,并且每个序列都拥有至少一个线性基。线性基有三个性质:线性基中的几个数异或后不能得到\(0\)。线性基中的数在异或后能得到原序列中的所有数。......
  • 20241313刘鸣宇《计算机基础与程序设计》第14周学习总结
    2024-2025-120241313《计算机基础与程序设计》第14周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标<写上具体方面>......