一、为什么要使用JetPack Compose?

1.Android视图层次结构存在的问题

由于应用的状态会因用户交互等因素而发生变化,因此界面层次结构需要进行更新以显示当前数据。在更新时会改变 widget 的内部状态。手动操纵视图会提高出错的可能性。而且软件维护的复杂性会伴随更新UI组件的状态的增加而增加。

2.JetPack Compose的处理方式

Compose是一个声明性界面框架。声明性界面模型的工作原理是在概念上从头开始重新生成整个屏幕,然后仅执行必要的更改。此方法可避免手动更新有状态视图层次结构的复杂性。大大简化了UI界面的构建和状态的更新。

二、Compose的配置

在顶层项目中的build.gradle中配置如下信息:

buildscript {ext {compose_version = '1.1.1'}
}
plugins {...    id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
}在对应的应用模块的build.gradle中配置如下信息:
android {... kotlinOptions {jvmTarget = '1.8'}buildFeatures {compose true}composeOptions {kotlinCompilerExtensionVersion compose_version}}dependencies {...implementation "androidx.compose.ui:ui:$compose_version"implementation "androidx.compose.material:material:$compose_version"implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
}

三、可组合函数和可预览函数

1.可组合函数

在函数前增加@Composable注解定义的函数,多个可组合函数嵌套构建成一个界面。

@Composable注解的作用是通知Compose编译器将这个可组合函数及其相关的数据处理为一个界面。

可组合函数没有返回值。

2.可预览函数

可预览函数首先是可组合函数,但是增加了@Preview注解,表明可以在Android Studio的Design视图显示预览函数代码组成的界面。

例如:

@Composable
fun GreetingWithBox(name:String){Box(modifier= Modifier.fillMaxWidth().padding(5.dp)){Text(text= "欢迎 $name !",fontSize = 24.sp, textAlign = TextAlign.Center)}
}
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {GreetingWithBox("Android 世界")
}

四、脚手架Scaffold构建界面

@Composable
fun Scaffold(modifier: Modifier = Modifier,scaffoldState: ScaffoldState = rememberScaffoldState(),topBar: @Composable () -> Unit = {},bottomBar: @Composable () -> Unit = {},snackbarHost: @Composable (SnackbarHostState) -> Unit = { SnackbarHost(it) },floatingActionButton: @Composable () -> Unit = {},floatingActionButtonPosition: FabPosition = FabPosition.End,isFloatingActionButtonDocked: Boolean = false,drawerContent: @Composable (ColumnScope.() -> Unit)? = null,drawerGesturesEnabled: Boolean = true,drawerShape: Shape = MaterialTheme.shapes.large,drawerElevation: Dp = DrawerDefaults.Elevation,drawerBackgroundColor: Color = MaterialTheme.colors.surface,drawerContentColor: Color = contentColorFor(drawerBackgroundColor),drawerScrimColor: Color = DrawerDefaults.scrimColor,backgroundColor: Color = MaterialTheme.colors.background,contentColor: Color = contentColorFor(backgroundColor),content: @Composable (PaddingValues) -> Unit
) {...
}

五、Modifier修饰符

Modifier修饰符起到组件属性配置的工具。Modifier调用属性配置的函数,仍会返回Modifier对象,因此可以对Modifier对象进行连续调用。

参考文献

Android Compose 教程  |  Android 开发者  |  Android Developershttps://developer.android.google.cn/jetpack/compose/tutorial?hl=zh-cn

Android JetPack Compose初步1相关推荐

  1. Android JetPack Compose初步2~实现可滚动列表的功能

    Android JetPack Compose的配置参考Android JetPack Compose初步1 在本应用中定义可滚动的列表的界面,类似RecyclerView组件的显示效果. 一.定义实 ...

  2. Android: Jetpack Compose如何禁用涟漪(水波纹)效果

    系列文章目录 Android: Jetpack Compose如何禁用涟漪(水波纹)效果 Android:使用Jetpack Compose 实现Text控件跑马灯效果 Android:使用Jetpa ...

  3. Android Jetpack Compose

    Android Jetpack Compose 一.什么是Jetpack Compose 二.关于Jetpack Compase的介绍 Jetpack Compose的特点 Jetpack Compo ...

  4. 学不动了,尝试用Android Jetpack Compose重写微信经典飞机大战游戏

    前段时间看了TechMerger大佬写的<一气呵成:用Compose完美复刻Flappy Bird!>,甚是有趣,按耐不住那躁动的心,笔者决定跟随大佬的脚步通过写游戏的方式学习Jetpac ...

  5. (转)Android Jetpack Compose 最全上手指南

    在今年的Google/IO大会上,亮相了一个全新的 Android 原生 UI 开发框架-Jetpack Compose, 与苹果的SwiftIUI一样,Jetpack Compose是一个声明式的U ...

  6. 原创|Android Jetpack Compose 最全上手指南

    在今年的Google/IO大会上,亮相了一个全新的 Android 原生 UI 开发框架-Jetpack Compose, 与苹果的SwiftIUI一样,Jetpack Compose是一个声明式的U ...

  7. Android Jetpack Compose 最全上手指南 | 开发者说·DTalk

    本文原作者: 码农西哥,原文发布于微信公众号: Android 技术杂货铺  https://mp.weixin.qq.com/s/7tKv_RamfW0rG8tZHXH_rg 在 2019 年的 G ...

  8. Android Jetpack Compose 播放器动画

    效果: 直接上完整代码 @OptIn(ExperimentalAnimationApi::class) @Composable fun TestBottom(musicViewModel: Music ...

  9. Android Jetpack Compose——一个简单的微信界面

    一个简单的微信界面 简述 效果视频 底部导航栏 导航元素 导航栏 放入插槽 绘制地图 消息列表 效果图 实现 聊天 效果图 实现 气泡背景 联系人界面 效果图 实现 好友详情 效果图 实现 发现 效果 ...

最新文章

  1. 数据库常考面试知识点
  2. 如何编写无法维护的代码 让自己稳拿铁饭碗 ;-)
  3. dotNet Core使用SignalR实现websocket
  4. 记华为综合面试(IT集成类)
  5. solidwork 侵权 证据_电子商务法复习题
  6. Bailian2975 Caesar Cryptogram【密码】
  7. 魅族路由器极速版刷机_[技术贴]路由器刷pandavan固件教程——以魅族路由器极速版为例...
  8. linux 浏览器缓存目录在哪里找,火狐浏览器缓存文件在什么位置?缓存文件位置分享...
  9. 小程序加入人脸识别_微信小程序实现人脸识别
  10. 只你一招,解决NAS噪音及速度问题!
  11. 离线百度地图,添加按钮点击切换卫星地图和街道地图(纯JS)
  12. 关于Git及GitLab的简单易懂的使用方法(将本地仓库的项目提交到master分支或者自定义的分支上)
  13. C#支付宝支付接口H5版(手机网页支付)
  14. 软件测试学习心得-6
  15. linux中bash是什么命令,Bash简介 Bash是如何处理命令的
  16. 金链盟中国区块链应用大赛正式启动,200万奖金将花落谁家?
  17. 随机生成学号和成绩并排序
  18. BZOJ1095: [ZJOI2007]捉迷藏 【树上距离-括号序列+线段树】
  19. 使用Veritas Volume Replicator(VVR)对Oracle数据库进行容灾
  20. c51单片机矩阵键盘1602计算器_51单片机矩阵键盘计算器.doc

热门文章

  1. 赵剑华2008北京奥运会搞笑语录
  2. 微信小程序开发入门(连载)—— 认识微信小程序
  3. 快看漫画个性化推荐探索与实践
  4. 未初始化数组的默认初始值
  5. 献给和我一样的Java初学者——用UltraEdit代替“笨重”的IDE,实现轻巧编程!
  6. 用C语言编程画出图形,C语言图形编程(六) -图形程序设计实例:零件图形的绘制...
  7. 登陆ArcGIS Server Manager页面,点击Manager Service页面报错:工作站服务没有启动
  8. 保险行业的快速发展,主要运用了哪些人工智能技术?
  9. 子弹短信 android,子弹短信app下载_子弹短信app下载安卓版-太平洋下载中心
  10. 韩服服务器稳定吗,韩服体验最糟糕?论中美日韩四个服务器的游戏体验