随笔分类 - Android
摘要:
自定义 Composable 组件 目录一、Composable 组件渲染流程1.1 组合1.2 布局1.3 绘制二、自定义组合三、自定义布局3.1 LayoutModifier (自定义 View)3.2 Layout (自定义 ViewGroup)3.3 固有特性测量Intrinsic3.3.1
阅读全文

摘要:问题 在使用 Jetpack Compose 延迟列表时遇到一个坑,简单记录一下。直接上代码: 这个代码看起来也没有什么问题,滑动正常,点击滑动到顶部也正常。 但是极端操作:在一边滑动列表一边点击按钮,就出问题了。这样再点击按钮,就不生效了。从日志来看,点击时协程发射值没有问题,但是 collect
阅读全文
摘要:
目录前言一、Jetpack Compose 中处理嵌套滚动的思想二、Modifier.nestedScroll2.1 NestedScrollConnection2.2 NestedScrollDispatcher三、实操讲解3.1 父组件消费子组件给过来的事件——NestedScrollConne
阅读全文

摘要:
目录一、点按手势1.1 Modifier.clickable1.2 Modifier.combinedClickable二、滚动手势2.1 滚动修饰符 Modifier.verticalScorll / Modifier.horizontalScorll2.2 可滚动修饰符 Modifier.scr
阅读全文

摘要:
问题:Jetpack Compose 中使用 Material 包中的控件,点击默认会有水波纹效果。如何去除这个点击水波纹效果呢? 看下 Modifier.clickable 的签名: fun Modifier.clickable( interactionSource: MutableInterac
阅读全文

摘要:
看问题本质,设置全面屏,是系统窗口的行为,与 View 和 Compose 有什么关系呢? 所以,原理和传统 View 视图是一样的,甚至 Api 都是一模一样的,不熟悉的可以看我之前的文章。传送门: Android 全面屏体验 那为什么还要写这篇文章呢?主要是在 Compose 中写法上的一些区别
阅读全文

摘要:
本文全面介绍 Jetpack Compose 中的动画。
阅读全文

摘要:
目录一、 Composable 的生命周期二、 Composable 的副作用2.1 SideEffect2.2 DisposableEffect2.3 LaunchedEffect2.4 rememberCoroutineScope2.5 rememberUpdatedState2.6 deriv
阅读全文

摘要:
目录一、状态变化1.1 状态变化是什么1.2 mutableStateListOf 和 mutableStateMapOf二、重组的特性2.1 Composable 重组是智能的2.2 Composable 会以任意顺序执行2.3 Composable 会并发执行2.4 Composable 会反复
阅读全文

摘要:
本文主要讲解了 Compose 中状态的概念。最后做个小结,
- Compose UI 依赖状态变化,触发重组,驱动界面更新。
- 使用 remember 和 rememberSaveable 进行状态持久化。remember 保证在 recompose 过程中状态稳定,rememberSaveable 保证 Activity 自动销毁重建过程中状态稳定。
- 状态上提,尽可能将 Stateful 组件转换为 Stateless 组件。
- 视情况使用 Stateful、StateHoler、ViewModel 管理状态。
- 将 LiveData、RxJava、Flow 数据流转换为 State。
阅读全文

摘要:
本文通过创建一个 Demo 示例,说明如何使用 Jetpack Compose, 简单介绍了 Jetpack Compose Api 设计原则,以及 Compose 与 View 的互操作性。
阅读全文

摘要:
目录写在前面一、Jetpack Compose 是什么1.1 全新的 Android UI 开发框架1.2 命令式UI 与 声明式UI二、Google 为什么力推 Jetpack Compose2.1 开发效率更高2.2 组合优于继承三、为什么要学习 Jetpack Compose3.1 声明式 U
阅读全文

摘要:
如何在 WindowManager.addView 中使用 Jetpack Compose 一、引出问题 Android 开发中,很常见的一个场景,通过 WindowManager.addView() 添加一个 View 到屏幕上。Android 最新的视图框架 Jetpack Compose,如何
阅读全文

摘要:kotlinx.serialization —— 一个可以取代 Gson 的高效的 Json 解析框架
阅读全文
摘要:一、bug 背景 项目中有下面这样一段代码,在 Android T 版本运行正常,现在适配到 Android U 上之后,运行时 crash 了。。。。 ... values.put(MediaStore.Images.Media.DATA, file.absolutePath) values.pu
阅读全文
摘要:亲测可行,Android Studio 查看源码出现 Source for ‘Android API xxx Platform’ not found 的解决方法 如标题中的问题,产生的原因就是 SDK 源码目录下找不到对应版本的源码文件。解决方案一般就是下载对应版本的源码文件即可。 这里主要是另一种
阅读全文
摘要:
如果你会 Java, 那么来看一看 Kotlin , 基础入门。
如果你不理解 Kotlin 的lambda 表达式,那么来看一看,帮助你真正理解函数类型,lambda 表达式。
阅读全文

摘要:某天将项目 kotlin 版本升级到了 1.8.0 ,然后编译报错了, Duplicate class kotlin-stblib vs kotlin-stdlib-jdk7/8 然后开始寻求解决方案... Duplicate class kotlin-stblib vs kotlin-stdlib
阅读全文
摘要:一、根目录下 build.gradle 变更 变更前: buildscript { ext.kotlin_version = '1.5.0' repository { repository { mavenCentral() jcenter() } dependencies { classpath '
阅读全文