当前位置:首页 > 经验 >

android开发技术(android开发详细教程)

来源:原点资讯(www.yd166.com)时间:2022-11-01 21:14:34作者:YD166手机阅读>>

  • 传统的 UI 编程方式我们再熟悉不过了。常见的操作是先定义一个 xml,然后通过 Activity 的 setContentView() 将 xml 放进去,之后就交给系统来加载。

<androidx.constraintlayout.widget.ConstraintLayout ...> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World" ... /> </androidx.constraintlayout.widget.ConstraintLayout>

class MainActivity: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { ... setContentView(R.layout.activity_main) } }

  • Compose 编程方式

Compose UI 工具包则依赖 Composable 注解将展示 UI 的函数声明为可组合函数,Compose 编译器负责标记可组合函数内的组件,并进行展示。

布局的部分均需要放在该函数内交由 Compose 组合。

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { ... setContent { SimpleComposable() } } @Composable fun SimpleComposable() { Text("Hello World") } }6.3 进阶示例

来看一下下面这个简单的动态效果,并思考一下:如果采用传统的 View 编程方式来实现,你需要多少代码量?

android开发技术,android开发详细教程(25)

采用传统的 View 方式,无非是如下的思路,布局加上逻辑少于100 行代码不太容易实现:

  • 布局:CardView LinearLayout(ImageView TextView)
  • 代码:监听、展开和隐藏 TextView,并考虑阴影和淡出动画)

那如果采用 Compose 来实现呢?只需要 10 行即可。

  1. Composable 函数组合圆角组件 Card 垂直布局组件 Column
  2. Column 嵌套图片组件 Image 和动画组件 AnimatedVisibility 包裹的文本组件 Text
  3. Column 的 click 事件更新展开或隐藏的 state,进而触发 AnimatedVisibility 的*,刷新 Text 的展示与否

@Composable fun JetpackCompose() { Card { var expanded by remember { mutableStateOf(false) } Column(Modifier.clickable { expanded = !expanded }) { Image(painterResource(R.drawable.jetpack_compose)) AnimatedVisibility(expanded) { Text( text = "Jetpack Compose", style = MaterialTheme.typographt.h2, ) } } } }6.4 优势

android开发技术,android开发详细教程(26)

篇幅有限,事实上 Compose 具备非常多的优势,亟待大家的挖掘:

  • 声明式 UI:只负责描述界面,Compose 系统负责其余工作
  • 状态驱动:界面随着状态自动更新
  • 高效渲染:固定测量,层级嵌套性能仍是 O(n)
  • 结合 AS 的 Preview 视图可实时查看和直接交互 UI
  • 兼容传统 View 树编程方式,可混合使用
  • 支持 Material Design 设计语言
  • 拥有 Jetpack 框架的大力配合
  • 基于 Kotlin,代码简洁,大量 Kotlin 专属 API
  • 跨平台亦有布局:Desktop、 Web

大家可以利用 Compose 先来实现一个新画面,或者改造一个现有画面,逐步推进 Compose 的学习和实践。但是 Compose UI 工具包目前在部分场景下的组件支持有限,比如 WebView、``CameraView` 等,这些场景下仍需要配合 Android 原生的 View 方式来完成。

6.5 Sample
  • 官方 Sample:完全使用 Compose 设计的八大主流场景的 App,专业、全面。https://github.com/android/compose-samples

android开发技术,android开发详细教程(27)

  • Movie客户端 本人使用 Compose 的大部分 UI 组件、视图切换和数据刷新重构的电影搜索 App。https://github.com/ellisonchan/ComposeMovie
  • 俄罗斯方块 fun 神将自定义 Compose 组件和状态管理发挥到了极致,搭配定时器和各式动画实现,非常值得用来深入学习 Compose 技术。https://github.com/vitaviva/compose-tetris

android开发技术,android开发详细教程(28)

栏目热文

工厂android开发稳吗(android开发吃香吗)

工厂android开发稳吗(android开发吃香吗)

前言金九银十到来,又是一年秋招季。对于我来说已经是干Android程序员的第八个年头,经历过近几年的互联网低谷,才深知行...

2022-11-01 21:34:25查看全文 >>

android 实例教程(android 开发进阶教程)

android 实例教程(android 开发进阶教程)

前言在许多的Android App中,我们点击进入时,都可以看到一个欢迎页面,大概持续了几秒,然后跳转至主页面。以下是我...

2022-11-01 21:18:15查看全文 >>

android软件开发方法(android快速开发流程)

android软件开发方法(android快速开发流程)

每天都跟大家分享一些软件开发或者APP开发的小知识,我们总提到APP开发,那么APP究竟是怎么开发的?APP开发难不难?...

2022-11-01 20:58:16查看全文 >>

android底层开发教程(android开发学习步骤)

android底层开发教程(android开发学习步骤)

1.USB共享网络还有意义吗?企业临时办公场地的网络如何搭建?Hi,大家好,我是旋律果子,一个网络极客,也是linux开...

2022-11-01 21:37:24查看全文 >>

android开发技巧(android快速开发流程)

android开发技巧(android快速开发流程)

前言:在平时的项目开发中有时会因为需求的变更,导致会造成很多文件未能及时删除,最终在长时间的日积月累中导致很多文件都是无...

2022-11-01 21:27:54查看全文 >>

android开发实现语音播报(android语音控制app交互方法)

android开发实现语音播报(android语音控制app交互方法)

微信经过10余年的发展已经拥有了超过12亿的活跃用户,并且所包含的许多功能都与我们的日常生活息息相关,俨然已经成为了国内...

2022-11-01 21:01:13查看全文 >>

android开发实战(android开发快速入门)

android开发实战(android开发快速入门)

该课程包含:学习Kotlin基础语法,高级特性,使用Kotlin开发Android项目实战演练,学习技术不仅要知其然,还...

2022-11-01 21:06:12查看全文 >>

android零基础开发教程(android自学入门教程)

android零基础开发教程(android自学入门教程)

学习是非常艰难的为什么要这么说呢?首先,我们要来客观的看待一个状态,那就是——迷茫了,这种状态是什么?其实这种状态是比较...

2022-11-01 21:13:46查看全文 >>

win7系统怎么查询苹果笔记本型号(苹果电脑win系统怎么查型号)

win7系统怎么查询苹果笔记本型号(苹果电脑win系统怎么查型号)

我们都知道Mac电脑有各种型号,各个型号的配置都不一样。那么如何查看Mac电脑的详细配置呢?下面分享Mac电脑查看详细配...

2022-11-01 21:03:26查看全文 >>

怎么查看苹果电脑详细型号(苹果电脑怎么查型号和配置)

怎么查看苹果电脑详细型号(苹果电脑怎么查型号和配置)

北京时间10月19日,苹果召开了秋季第二场新品发布会,会中发布了全新的MacBook Pro,定位高端,是上代16英寸M...

2022-11-01 21:17:33查看全文 >>

文档排行