一文带你了解 Jetpack Compose UI 框架

这篇具有很好参考价值的文章主要介绍了一文带你了解 Jetpack Compose UI 框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 对于类似 Button 函数的这种,提供了 onClick 函数式接口供外部设置点击监听;

  • 对于类似 Text 函数这种,没有提供显式接口设置的,通过 Modifier 类设置点击监听;

Button 函数设置点击事件

@Composable

fun TextButton() {

Button(

onClick = {

Log.d(“Andoter”, this.javaClass.name)

Toast.makeText(this@MainActivity, “Button 点击”, Toast.LENGTH_SHORT).show()

}

) {

Text(text = “Hello Compose!”, color = Color.Red)

}

}

通过设置 onClick 函数即可实现点击实现,注意 Button 函数本身没有设置文本内容,需要通过 Text 函数设置显示文本内容。

Text 函数设置点击事件

@Composable

fun ClickedText() {

val modifier = Modifier.clickable(onClick = {

Log.d(“Andoter”, this.javaClass.name)

Toast.makeText(this@MainActivity, “Button 点击”, Toast.LENGTH_SHORT).show()

})

Text(text = “Hello Compose!”,modifier = modifier.padding(10.dp))

}

通过 Modifier.clickable 的方式实现设置点击事件。Modifier 类不仅能够设置点击事件,还能够设置控件的布局属性。

  • clickable() :设置点击监听

  • padding() :在元素周围留出空间

  • fillMaxWidth() :使可组合项填充其父项给它的最大宽度

  • preferredSize() :指定元素的首选宽度和高度

2.4 预览


Compose 框架中为 Compose 函数提供预览能力,通过给 Compose 函数添加 @Preview 注解即可进行预览。在实际的开发中,预览函数不要发布到线上,所以最佳做法是单独创建不会被应用调用的预览函数用于查看实际效果,专门的预览函数可以提高性能,并且有利于以后更轻松地设置多个预览。 一文带你了解 Jetpack Compose UI 框架,程序员,ui

3. 布局

======

Jetpack Compose 中一切的元素都是围绕 Compose 函数展开,所以布局也是通过对应的内置 Compose 函数实现。

3.1 ColumnRow


二者的特点:

  • Column:使元素按照竖直方向排列;

  • Row:使元素按照水平方向排列;

  • Stack:将一个元素放在另一个元素上。

这里我们以 Column 函数作为示例。

@Preview

@Composable

fun MultiText() {

Text(text = “Hello Compose!”)

Text(“Ant 学习 Compose!”)

}

@Preview

@Composable

fun ColumnText() {

Column {

Text(text = “Hello Compose!”)

Text(“Ant 学习 Compose!”)

}

}

通过 Column 可将组件按照竖直方向排列,预览效果对比:

一文带你了解 Jetpack Compose UI 框架,程序员,ui

3.2 ScrollableRowScrollableColumn


使用 ScrollableRowScrollableColumn 可使 RowColumn 内的元素滚动。

@Composable

fun ProductList() {

ScrollableColumn(Modifier.fillMaxSize()) {

listOf(“Ant”, “Andoter”, “小伟”).forEach { value ->

ProductDetailView(value)

}

}

}

@Composable

fun ProductDetailView(text: String) {

val image = imageResource(id = R.drawable.header)

Column(modifier = Modifier.padding(16.dp)) {

val imageModifier = Modifier

.preferredHeight(180.dp)

.clip(shape = RoundedCornerShape(5.dp))

.fillMaxWidth()

.clickable(onClick = {

Log.d(“Ant”, “click”);

})

Image(image, modifier = imageModifier, contentScale = ContentScale.Crop)

Spacer(modifier = Modifier.preferredHeight(16.dp))

Text(“Hello Compose!”)

}

}

一文带你了解 Jetpack Compose UI 框架,程序员,ui

4. Compose 界面结构

==================

通过上面的介绍,对 Compose 有了一个初步的认识,那么 Compose 函数如何绘制在屏幕上的呢?以什么样的形式展示的呢?我们使用 Layout Inspector 工具查看一个 Compose 页面。

一文带你了解 Jetpack Compose UI 框架,程序员,ui

通过左侧的布局结构可以发现,Compose 框架中已经废弃原有的 View 体系中的控件(TextViewButtonImageView 等),而是使用 AndroidComposeView(继承 ViewGroup)、ViewLayerContainer(继承 ViewGroup)和 ViewLayer(继承 View) 控件实现,其中 ViewLayer 代表每个 View 控件视图。

查看 ViewLayer 的调用关系,可以得到视图的生成关系:LayerWrapperAndroidComposeView -> ViewLayer一文带你了解 Jetpack Compose UI 框架,程序员,ui

5. Compose 对业务的影响

====================

Jetpack Compose 是一个适用于 Android 的新式声明性界面工具包,同时点击监听的设置方式也发生较大变化,那么对于我来说,最直观的业务影响是无法继续使用原有的插码技术进行点击事件的采集。这块需要进行调研适配。

上面提到设置点击的两种方式,本质上都是通过 Modifier 进行实现,来看下面的一个例子。

@Composable

fun ClickedText() {

val modifier = Modifier.clickable(onClick = {

Log.d(“Andoter”, this.javaClass.name)

Toast.makeText(this@MainActivity, “Button 点击”, Toast.LENGTH_SHORT).show()

})

Text(text = “Hello Compose!”, modifier = modifier.padding(10.dp))

}

通过 Modifier 给一个 Text 设置点击监听,在点击的时候弹出一个 Toast。反编译看看最后的实现。

/* access modifiers changed from: package-private */

@Metadata(mo23161bv = {1, 0, 3}, mo23164k = 3, mo23165mv = {1, 4, 0})

/* compiled from: MainActivity.kt */

public final class MainActivity$TextButton$1$1 extends Lambda implements Function0 {

private final /* synthetic */ MainActivity $this;

/* JADX INFO: super call moved to the top of the method (can break code semantics) */

MainActivity$TextButton$1$1(MainActivity mainActivity) {

super(0);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

一文带你了解 Jetpack Compose UI 框架,程序员,ui

一文带你了解 Jetpack Compose UI 框架,程序员,ui

一文带你了解 Jetpack Compose UI 框架,程序员,ui

一文带你了解 Jetpack Compose UI 框架,程序员,ui

一文带你了解 Jetpack Compose UI 框架,程序员,ui

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

一文带你了解 Jetpack Compose UI 框架,程序员,ui

Android进阶资料

以下的资料是近年来,我和一些朋友面试收集整理了很多大厂的面试真题和资料,还有来自如阿里、小米、爱奇艺等一线大厂的大牛整理的架构进阶资料。希望可以帮助到大家。

Android进阶核心笔记

一文带你了解 Jetpack Compose UI 框架,程序员,ui

百万年薪必刷面试题

一文带你了解 Jetpack Compose UI 框架,程序员,ui

最全Android进阶学习视频文章来源地址https://www.toymoban.com/news/detail-848095.html

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

g" />

Android进阶资料

以下的资料是近年来,我和一些朋友面试收集整理了很多大厂的面试真题和资料,还有来自如阿里、小米、爱奇艺等一线大厂的大牛整理的架构进阶资料。希望可以帮助到大家。

Android进阶核心笔记

[外链图片转存中…(img-njn1G78t-1712337386438)]

百万年薪必刷面试题

[外链图片转存中…(img-Ai4IEmOY-1712337386438)]

最全Android进阶学习视频

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

到了这里,关于一文带你了解 Jetpack Compose UI 框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 黑马程序员带你快速了解区块链六大特点

    区块链上数据的验证、记账、存储、维护和传输等均是基于分布式结构,采用数学和算法的方法而不是中心机构来构建分布式节点之间的信任关系,从而形成非中心化的、可信任的分布式结构。交易参与者可以自证并直接交易,不需要依赖第三方中介机构的信任背书。 不可篡

    2024年03月25日
    浏览(32)
  • 一文带你快速了解Python史上最快Web框架

    【作者主页】: 吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建

    2024年02月05日
    浏览(38)
  • 一文带你了解QT Model/View框架的设计思想和实现机制

    目录 1、QT Model/View框架简介 1.1、QT Model/View是什么? 1.2、QT Model/View框架核心思想 1.3、Model/View框架工作机制 1.4、Model/View框架的类 2、Model 2.1模型简介 2.2、模型索引 2.3、数据角色 2.4、QStringListModel 2.5、QFileSystemModel 2.6、QSortFilterProxyModel 3、View 4、Delegate 5、项选择模型 5.1、QIt

    2024年02月05日
    浏览(67)
  • 【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

    权限框架是软件开发中用于管理 用户权限和访问控制 的工具。在企业或者我们毕设复杂的系统中,不同的用户或角色需要拥有不同的访问和操作权限,以确保系统的安全性和数据完整性。今天我们就讨论一下Java中的安全框架! 在企业的开发中,Spring Security,Shiro都是比较流

    2024年04月16日
    浏览(32)
  • 黑马程序员3天带你玩转Python深度学习TensorFlow框架学习笔记

    这是黑马程序员3天带你玩转Python深度学习TensorFlow框架学习笔记 视频链接: 黑马程序员3天带你玩转Python深度学习TensorFlow框架 学习目标:知道深度学习与机器学习的区别 区别:深度学习没有特征提取 特征方面 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专

    2024年02月01日
    浏览(43)
  • Jetpack Compose UI架构

    Jetpack Compose是我职业生涯中最激动人心的事。它改变了我工作和问题思考的方式,引入了易用且灵活的工具,几乎可轻松实现各种功能。 早期在生产项目中尝试了Jetpack Compose后,我迅速着迷。尽管我已有使用Compose创建UI的经验,但对新的Jetpack Compose驱动特性的组织和架构引发

    2024年02月11日
    浏览(37)
  • Jetpack Compose 深入探索系列四: Compose UI

    通过 Compose runtime 集成 UI Compose UI 是一个 Kotlin 多平台框架。它提供了通过可组合函数发出 UI 的构建块和机制。除此之外,这个库还包括 Android 和 Desktop 源代码,为 Android 和 Desktop 提供集成层。 JetBrains积极维护Desktop代码库,而Google维护Android和通用代码库。Android和Desktop源代码

    2024年02月12日
    浏览(36)
  • Jetpack Compose -> 声明式UI & Modifier

    本章主要介绍下 Compose 的声明式 UI 以及初级写法; 传统UI 传统 UI 方式来声明UI 是通过 xml 来进行显示的,显示文字的方式是使用 TextView,它内部显示文字的方式有两种,一种是在 xml 中直接设置,通过下面这种方式设置 这种方式是通过初始值在 xml 中进行预设置的; 还有一

    2024年02月02日
    浏览(34)
  • Jetpack Compose UI 底部弹窗实现

    使用Compose Ui的Dialog 默认是居中显示屏幕中间。 实现思路: 1.弹窗完全自定义一个全屏弹窗; 2.显示内容显示在底部区域。 3.点击其他空白区域关闭弹窗。

    2024年02月11日
    浏览(37)
  • Android笔记(六):JetPack Compose常见的UI组件

    Text显示的文本来源可以引用res-values-strings.xml中的资源,如第一个显示文本所示。 点击按钮前: 点击按钮后: 点击第一个圆角按钮不放时,显示为按钮:true Button有两方面需要注意: (1) Buttton有一个参数interactionSource,用来监听组件状态的事件源,通过它获取组件的状态来

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包