Jetapck Compose 去除点击水波纹效果
问题:Jetpack Compose 中使用 Material 包中的控件,点击默认会有水波纹效果。如何去除这个点击水波纹效果呢? 看下 Modifier.clickable 的签名: fun Modifier.clickable( interactionSource: MutableInteractionSource, indication: Indication?, ...
问题:Jetpack Compose 中使用 Material 包中的控件,点击默认会有水波纹效果。如何去除这个点击水波纹效果呢? 看下 Modifier.clickable 的签名: fun Modifier.clickable( interactionSource: MutableInteractionSource, indication: Indication?, ...
看问题本质,设置全面屏,是系统窗口的行为,与 View 和 Compose 有什么关系呢? 所以,原理和传统 View 视图是一样的,甚至 Api 都是一模一样的,不熟悉的可以看我之前的文章。传送门: Android 全面屏体验 那为什么还要写这篇文章呢?主要是在 Compose 中写法上的一些区别,直接上代码: 找到主题设置的代码,默认生成的主题如下: @Composable fu...
一、引出问题 Android 开发中,很常见的一个场景,通过 WindowManager.addView() 添加一个 View 到屏幕上。Android 最新的视图框架 Jetpack Compose,如何应用进来。这个被添加的 View 如何使用 Compose 编写视图呢? 二、探究问题 有的朋友肯定会马上想到使用 ComposeView 作为桥梁。没错,WindowManager....
一、Composable 组件渲染流程 传统 View 体系中,视图的渲染流程可以分为三个步骤: 测量、布局、绘制。在 Compose 中,组件的渲染流程也可划分为三步:组合、布局、绘制。 组合:执行Composable函数体,生成并维护LayoutNode视图树。 布局:对于视图树中的每个LayoutNode进行宽高尺寸测量并完成位置摆放。 绘制:将所有LayoutNode...
前言 所谓嵌套滚动,就是两个组件之间出现滚动事件冲突了,要给与特定的处理逻辑。在传统 View 系统中称之为滑动冲突,一般有两种解决方案,外部拦截法和内部拦截法。在 Jetpack Compose 中,提供了 Modifier.nestedScroll 修饰符用来处理嵌套滚动的场景。 一、Jetpack Compose 中处理嵌套滚动的思想 在介绍 Modifier.nestedScrol...
本文介绍 Jetpack Compose 中的手势处理。 官方文档的对 Compose 中的交互做了分类,比如指针输入、键盘输入等。本文主要是介绍指针输入,类比传统 View 体系中的事件分发。 说明:在 Compose 中,手势处理是通过 Modifier 实现的。这里,有人可能要反驳,Button 这个可组合项,就是专门用来响应点击事件的,莫慌,接着往下看。 一、点按手势 1.1 ...
本文介绍 Jetpack Compose 动画。 官方文档 关于动画这块,第一次看官网,觉得内容很杂,很难把握住整个框架结构,很难去对动画进行分类。参考了很多文献资料,大多数都是从高级别 API 开始讲解,包括官网也是如此。我发现这样不太容易理解,因为高级别 API 中可能会涉及到低级别 API 中的一些方法,术语等。所以本文从低级别 API 讲起。 一、低级别动画 API 1.1 ani...
一、 Composable 的生命周期 Composable 组件都是函数,Composable 函数执行会得到一棵视图树,每一个 Composable 组件对应视图树上的一个节点。Composable 的生命周期定义如下: onActive(添加到视图树) Composable 首次被执行,即在视图树上创建对应的节点。 onUpdate(重组) Composable 跟随重组不...
上一篇文章讲了 Compose 中状态管理的基础知识,本文讲解 Compose 中状重组的相关知识。 一、状态变化 1.1 状态变化是什么 根据上篇文章的讲解,在 Compose 我们使用 State 来声明一个状态,当状态发生变化时,则会触发重组。那么状态变化是指什么呢? 下面我们来看一个例子: @Composable fun NumList() { val num by re...
上一篇文章拿 TextField 组件举例时,提到了 State,即状态。本篇文章,即讲解 State 的相关改概念。 一、什么是状态 与其它声明式 UI 框架一样,Compose 的职责非常单纯,仅作为对数据状态的反应。如果数据状态没有改变,则 UI 永远不会自行改变。在 Compose 中,每一个组件都是一个被 @Composable 修饰的函数,其状态就是函数的参数,当参数不变,则函...