前言一个纯 Compose 项目少不了页面导航的支持,而 navigation-compose 几乎是这方面的唯一选择,这也使得它成为 Compose 工程的标配二方库。介绍 navigation-compose 如何使用的文章很多了,比如这篇。其实在代码设计上 Navigation 也非常值得大家学习,那么本文就带大家深挖一下其实现原理从 Jetpack Navigation 说起Jetpack
转载
2023-07-11 11:25:43
631阅读
目录jetpack compose原理解析jetpack compse声明式ui开发原理分析整体框架介绍compose LayoutNode布局介绍@Composeable注解实现细节属性更新小结 jetpack compose原理解析jetpack compseJetpack Compose是Google在2019 I/O大会上公布开源的一个非捆绑工具包。Jetpack Compose是用于构
转载
2024-03-11 11:03:37
131阅读
前言在这篇文章中提到了 Navigation 的状态保存实际是由 rememberSaveable 实现的,有同学反馈希望单独介绍一下 rememberSaveable 的功能及实现原理。我们都知道 remember 可以保存数据、避免状态因重组而丢失。但它依然无法避免在 ConfigurationChanged 时的数据丢失。想要在横竖屏切换等场景下依然保存状态,就需要使用 rememberSa
转载
2024-06-28 11:39:08
68阅读
文章目录Compose概览compose是什么声明式声明式更新组合函数状态statevar value by remember { mutableStateOf(default) }mutableStateOfrememberrememberSaveable状态提升接入ViewModel和LiveData使用Modifier Compose概览官方文档 我个人看了下官方的文档,尝试了一下demo
转载
2023-08-31 15:50:04
176阅读
Compose 有助于为应用程序解锁更快的速度和更顺畅的发布,其具有以下几个优点:声明式 不同于传统的命令式,ui的刷新需要调用者主动调用刷新方法,比如TextView需要特定的setText进行文本变化,而compose在定义好声明状态后,由框架自主调用刷新,减少状态不一致兼容性compose最低兼容到android api 21,不但可以在原来View体系中嫁接使用,也可以在compose中使
转载
2023-09-14 12:52:16
170阅读
# Android Compose原理实现指南
## 1. 整体流程
在学习Android Compose原理的过程中,主要分为以下几个步骤:
| 步骤 | 内容 |
| ---- | ---- |
| 1 | 创建Compose项目 |
| 2 | 创建Compose布局 |
| 3 | 使用Compose组件 |
| 4 | 运行Compose项目 |
## 2. 具体步骤及代码示例
原创
2024-06-01 05:40:11
96阅读
你好,我是朱涛。今年的Google I/O大会上,Android官方针对Jetpack Compose给出了一系列的性能优化建议,文档和视频都已经放出来了。总的来说,官方的内容都非常棒,看完以后我也有些意犹未尽。推荐你去看看。不过,如果你对Compose的底层原理不是特别熟悉的话,那么,看完Android官方的文档、视频以后,你心中可能还是会充满疑问,似懂非懂。毕竟,官方对「Compose性能优化
转载
2024-08-29 10:59:22
25阅读
Compose 是一个界面工具包,可让您轻松实现应用的设计。您只需描述自己想要的界面外观,Compose 会负责在屏幕上进行绘制。Compose布局的优势使用Compose布局还有许多其他优势:灵活性:Compose布局支持组合任何数量的UI元素和自定义布局代码,可以实现最具创意的设计。性能:Compose布局引入了“Recompose”概念,可以在仅重新绘制必要元素的情况下更新UI,从而提高应用
转载
2024-08-27 08:57:23
105阅读
1. 为什么需要内容提供者contentProvider?为不同的应用之间数据共享提供统一的访问接口,内容提供者的作用 把私有的数据给暴露出来2. 内容提供者原理?原理:可以把ContentProvider当成Android系统内部的网站,这个网站以固定的Uri对外提供服务,而ContentResolver则可以当成android系统内部的HttpClient,它可以向指定的Uri发送请求(实际上
转载
2023-09-21 10:24:42
101阅读
前言Compose是Google I/O 2019 发布的新的声明式的UI框架。其实Google内部自2017年便开始立项,目前已发布beta版,API已稳定,构建,预览等开发体验已经趋于完整。而且新的设计思想绝对是趋势,已经在react和flutter等前端领域中得到验证,ios开发中同期推出的swiftUI更是证明了业界对于这种声明式UI开发趋势的共识。在去年六月底Google就大费周章号召全
转载
2024-02-02 15:15:22
77阅读
Compose 是 Google 推出的现代化 UI 开发工具包,基于声明式 UI 开发风格,加上 @Composable 函数帮助开发者有效的实现关注点分离,另外 Compose 内部最大程度优化了重组范围,可以帮助我们高效的刷新UI,考虑到 Compose 整体架构设计过于复杂,这篇文章主要带大家了解 Compose Runtime 层核心的实现逻辑。声明式UI声明式 UI 对于 Androi
转载
2024-04-30 06:52:43
49阅读
1. @Composable添加了@Composable注解的函数会使函数类型改变,其内部依赖于贯穿整个函数作用域的Composer。@Composable 的特点如下:@Composable 本质并不是一个注解处理器,Compose 在 Kotlin 编译器的类型检测与代码生成阶段依赖 Kotlin 编译器插件工作,所以无需注解处理器即可使用 Compose。@Composable 会导致它类型
转载
2023-08-20 14:15:52
1542阅读
前言:安卓原生View的事件分发流程,我们另外一篇文章中有讲到。在compose学习中,就不禁想到,compose的事件分发应该是怎样的呢?我感觉应该和原生是有区别的,毕竟底层的渲染机制都不一样。安卓原生是View->ViewGroup->ViewGroup层层嵌套的结构,而compose中,只有AndroidComposeView->ComposeView这两层结构而已。其余的
转载
2023-10-06 20:04:03
169阅读
# Android Compose MutableState 原理
## 简介
Android Jetpack Compose 是一种用于构建 Android UI 的全新方式,它采用了声明性编程模型,其中的核心概念之一是 `MutableState`。`MutableState` 是一种可变的状态对象,用于跟踪 UI 的状态变化并触发 UI 的更新。
在本文中,我们将深入探讨 `Mutab
原创
2023-12-07 09:43:49
385阅读
标为“之后可否被杀死?”的列指明了系统是否可以在这个方法返回之后的任意时刻杀掉这个activity的宿主进程, 而不再执行其它流程上的activity代码。 有三个方法是标为“可以”:( onPause()、 onStop()、 和onDestroy())。 因为onPause()是三个方法中的第一个, 一旦activity被创建, onPause() 就是进程可以被杀死之前最后一个能
前几天开发新程序的时候,选择了jetpack最新的组件compose来构建应用程序的界面。但是因为compose面世不久,网上基本找不到太多相关的资料,想找一个新拟态风格的控件库但是找不到,也就只能自己写一个。效果图: 这里以输入框为例,其他的空间做成新拟态的原理是一样的。一、原理其实新拟态的原理是很简单的,大致就是给控件加两个阴影,显示出光线明暗的变化,如上图所示,左上加的是白色的阴影
转载
2024-02-15 14:25:29
137阅读
简介Jetpack Compose 是用于构建原生 Andorid 界面的新工具包,Compose 使用了更少的代码,强大的工具和直观的 Kotlin Api 简化并且加快了 Android 上界面的开发。在 Compose 中,在构建界面的时候,无需在像之前那么构建 XML 布局,只需要调用 Jetpack Compose 函数来声明你想要的的元素,Compose 编译器就会自动帮你完成后面的工
转载
2024-03-30 21:34:49
503阅读
在以前的一篇文章构建一个WIFI室内定位系统_wifi定位系统,我介绍了如何用Android来测量WiFi信号,上传到服务器进行分析后,生成室内不同地方的WiFi指纹,从而帮助进行室内导航。当时我是用的HTML5+的技术来快速开发一个Android的应用,可以看到HTML5+能很便利的用我们熟悉的Web技术来进行开发,而不需要了解原生Android应用繁琐的开发知识。但是Android原生应用也有
转载
2024-10-24 06:48:05
14阅读
基础知识1. 目标高性能轻松编写自定义布局2. 基础知识@Composable
fun CardInfo() {
Text(text = "杰洛特")
Text(text = "来自利维亚")
}3. 标准布局组件3-1. 纵向布局使用Column沿垂直方向布局@Composable
fun CardInfo() {
Column {
Text(text =
转载
2024-01-17 10:34:08
107阅读
setContent做了什么我们基于一个最简单的例子进行分析class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
转载
2023-09-01 14:57:09
1388阅读