Android---Jetpack Compose学习006

1. 点击

clickable 修饰符允许应用检测对已应用该修饰符的元素的点击。

示例:点击控件,使得内容发生改变

class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {JetpackComposeGestureTheme {GestureSample()}}}
}@Composable
fun GestureSample(){Row(verticalAlignment = Alignment.CenterVertically, // 垂直居中horizontalArrangement = Arrangement.Center, // 水平居中modifier = Modifier.fillMaxSize() // 填充父容器 == match_parent) {ClickableSample()}
}@Composable
fun ClickableSample(){// 改变文本的内容,TODO 要使用到状态val count = remember { mutableStateOf(0) }Text(text = count.value.toString(),textAlign = TextAlign.Center,modifier = Modifier.clickable {// 点击文本之后,回调这个 clickable,使文本上的数据 count 发生变化count.value += 1}.wrapContentSize().background(Color.LightGray).padding(horizontal = 50.dp, vertical = 40.dp))
}

当需要更大灵活性时,你可以通过 pointerInput 修饰符提供点按手势检测器

2. 滚动修饰符

verticalScroll 和 horizontalScroll 修饰符提供一种最简单的方法,可让用户在元素内容边界大于最大尺寸约束时滚动元素。

示例:垂直滚动,verticalScroll

借助 ScrollState,你可以更改滚动位置或获取当前状态。如需使用默认参数创建此列表,请使用 rememberScrollState()。

示例:上面的垂直滚动中,我们是在 Column 内部改变(rememberScrollState 返回的是一个 ScrollState)  state 值。我们也可以借助 ScrollState 在 Column 外部改变 state 的值。

3. 可滚动修饰符

scrollable 修饰符与滚动修饰符不同,区别在于 scrollable 可检测滚动手势,但不会偏移其内容。此修饰符需要 ScrollableController 才能正常运行。构造 ScrollableController 时,你必须提供一个 consumeScrollDelta 函数,该函数将在每个滚动步骤(通过手势输入,平滑滚动或投掷)调用,并且增量以像素为单位。为了确保正确传播事件,必须从此函数返回使用的滚动距离量。

示例:

4. 自动嵌套滚动

简单的嵌套滚动无需你执行任何操作。启动滚动操作的手势会自动从子级传播到父级,这样一来,当子级无法进一步滚动时,手势就会由其父元素处理。

示例:

5. 拖动

draggable 修饰符是向单一方向拖动手势的高级入口点,并且会报告拖动距离(以像素为单位)。

示例1:

请务必注意,此修饰符与 scrollable 类似,仅检测手势。你需要保存状态并在屏幕上表示,例如通过 offset 修饰符移动元素。

示例2:往任意方向拖动

6. 滑动

使用 swipeable 修饰符,你可以拖动元素,释放后,这些元素通常朝一个方向定义的两个或多个锚点呈现动画效果。其常见用途是实现“滑动关闭”模式。

7. 多点触控:平移、缩放、旋转

如需检测用于平移、缩放和旋转的多点触控手势,你可以使用 transformable 修饰符。此修饰符本身不会转换元素,只会检测手势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比较不相交5点结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有6个节点,AB训练集各由6张二值化的图片组成,让差值结构有5个点,收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 如果行和列可以自由的变换,5个…

Java中的Stack的基本讲解

目录 一、创建栈 二、Stack的一些常用方法 对于栈的基本概念,我就不细说了&#xff0c;后进先出。比如1,2,3,依次进栈&#xff0c;那么出栈就是3&#xff0c;2&#xff0c;1。 一、创建栈 Stack<引用数据类型&#xff0c;基本数据类使用包装类> snew Stack<>();St…

杂谈--spconv导出中onnx的扩展阅读

Onnx 使用 Onnx 介绍 Onnx (Open Neural Network Exchange) 的本质是一种 Protobuf 格式文件&#xff0c;通常看到的 .onnx 文件其实就是通过 Protobuf 序列化储存的文件。onnx-ml.proto 通过 protoc (Protobuf 提供的编译程序) 编译得到 onnx-ml.pb.h 和 onnx-ml.pb.cc 或 on…

Linux第55步_根文件系统第2步_测试使用busybox生成的根文件系统

测试使用busybox生成的根文件系统。测试内容较多&#xff0c;很杂。 1、修改“nfs-kernel-server” 1)、打开终端 输入“sudo vi /etc/default/nfs-kernel-server回车”&#xff0c;打开“nfs-kernel-server”文件。 输入密码“123456回车” 见下图&#xff1a; 2)、在最后…

Filezilla:文件无法传输的问题

问题 解决方法 我发现我站点管理器原本设置的是FTP, 改成了SFTP就可以正常传输 FTP和SFTP 安全通道&#xff1a;FTP不提供安全通道&#xff0c;SFTP提供安全通道。 传输协议&#xff1a;FTP使用TCP/IP协议&#xff0c;SFTP是SSH协议的一部分。 最后由于SFTP使用了加密解密技…

【并发编程】AQS原理

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳中求进&#xff0c;晒太阳 1. 概述 全称是 AbstractQueuedSynchronizer&#xff0c;是阻塞式锁和相关的同步器工具的框架 特点&#xff1a; 用 state 属性来表示资源的状…

用HTML Canvas和JavaScript创建美丽的花朵动画效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>炫酷花朵</title><style>* {margin: 0;padding: 0;overflow: hidden;bac…

双指针:三数之和

力扣&#xff1a;l15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 参考的视频力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 还是贴一下代码&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int&…

CCF编程能力等级认证GESP—C++1级—20231209

CCF编程能力等级认证GESP—C1级—20231209 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)小杨的考试小杨报数 参考答案单选题判断题编程题1编程题2 单选题…

指纹识别描述

指纹由于其终身不变性、唯一性和方便性&#xff0c;几乎已成为生物特征识别的代名 词。通常我们说的指纹就是人的手指末端正面皮肤上凸凹不平的纹线&#xff0c;纹线规律地排列 形成不同的纹型。而本节所讲的指纹是指网站CMS 指纹识别、计算机操作系统及W eb 容器的指纹识别等…

vue中mapState应用场景及代码示例

这篇文章我们讨论 Vue.js 中 mapState 的详细解释、应用场景、示例代码和使用优势。 mapState 详解&#xff1a; mapState 是 Vuex 中的一个辅助函数&#xff0c;用于将状态映射到组件的计算属性或 methods 中。它允许组件更方便地访问和使用 Vuex 存储中的状态。 通过 map…

H5 粒子特效引导页源码

H5 粒子特效引导页源码 源码介绍&#xff1a;一款粒子特效引导页源码&#xff0c;带彩色文字和4个按钮。 下载地址&#xff1a; https://www.changyouzuhao.cn/10222.html

红色警戒 3 修改游戏速度

原文&#xff1a;https://blog.iyatt.com/?p13852 红警 2 是有提供游戏速度修改的&#xff0c;红警 3 没有&#xff0c;而且游戏速度似乎和 FPS 关联的&#xff0c;在配置低一些的电脑上会变慢&#xff0c;FPS 也降低&#xff0c;我电脑上开最高画质 FPS 不超过 30&#xff0c…

(12)Hive调优——count distinct去重优化

离线数仓开发过程中经常会对数据去重后聚合统计&#xff0c;count distinct使得map端无法预聚合&#xff0c;容易引发reduce端长尾&#xff0c;以下是count distinct去重调优的几种方式。 解决方案一&#xff1a;group by 替代 原sql 如下&#xff1a; #7日、14日的app点击的…

深度学习路线,包括书籍和视频

深度学习是一个广泛而快速发展的领域&#xff0c;涉及多种技术和应用。以下是一个深度学习学习路线&#xff0c;包括书籍和视频资源。 入门阶段&#xff1a; 理解基础知识&#xff1a; 书籍&#xff1a;《深度学习》&#xff08;Deep Learning&#xff09;Ian Goodfellow, Yos…

vite 和 webpack 的区别

Vite 和 Webpack 是两种不同的前端构建工具&#xff0c;它们在设计理念、构建原理和使用方式上有一些显著的区别&#xff1a; 构建原理&#xff1a; Vite&#xff1a;Vite 基于现代浏览器原生 ES 模块的导入机制&#xff0c;利用 ES 模块的特性&#xff0c;将每个模块作为一个个…

STM32介绍

目录 什么是STM32&#xff1f; STM32系列介绍 为什么要学STM32&#xff1f; STM32的未来前景 STM32是什么呢&#xff1f;简单来说&#xff0c;它就是一款非常流行的微控制器&#xff08;MCU&#xff09;&#xff0c;就像是我们电脑里的大脑&#xff0c;不过它可是专门为了嵌…

Vue3 中应该使用 Ref 还是 Reactive?

为什么要使用 ref&#xff1f; 你可能会好奇&#xff1a;为什么我们需要使用带有 .value 的 ref&#xff0c;而不是普通的变量&#xff1f;为了解释这一点&#xff0c;我们需要简单地讨论一下 Vue 的响应式系统是如何工作的。 当你在模板中使用了一个 ref&#xff0c;然后改变…

抽象的问题1

vue3&#xff0c;在使用v-mode绑定属性时&#xff0c;发生了奇怪的问题&#xff0c;渲染失败了 代码如下 <template><div><form><div>账号<input v-model"form_user_Data.username" type"text"></div><div>密…

【Python--Web应用框架大比较】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Django Django太重了&#xff0c;除了web框架&#xff0c;自带ORM和模板引擎&#xff0c;灵活和自由度不…