【HarmonyOS】实现矩形上下拖动、动态拖拽修改高度

简介

实现一个矩形块上下拖动,并且可以拖动边缘定位点改变矩形块高度。实现效果如下:
在这里插入图片描述

代码

@Entry
@Component
struct Rec_Page {@State penOffsetY: number = 0;@State offsetX: number = 0@State offsetY: number = 0@State positionX: number = 0@State positionY: number = 0@State rectHeight: number = 50;@State originHeight: number = 50;build() {Column() {Text('PanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY).margin({ bottom: 20 })Text('penOffsetY:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.penOffsetY).margin({ bottom: 20 })Text(`rectHeight:${this.rectHeight}`).margin({ bottom: 20 })RelativeContainer() {Shape() {Rect().width("100%").height("100%").fill("#dbe6fc").radius(5)}.borderColor("#3152ab").borderWidth(1).borderRadius(5).width("100%").height("100%")Text("添加日程").fontColor("#375bc1").id("AddText").alignRules({"center": { "anchor": "__container__", "align": VerticalAlign.Center },"middle": { "anchor": "__container__", "align": HorizontalAlign.Center }})Circle({ height: 10, width: 10 }).fill(Color.White).id("TopCircle").stroke("#1a52e3").strokeWidth(2).margin({ right: 150 }).alignRules({"center": { "anchor": "__container__", "align": VerticalAlign.Top },"middle": { "anchor": "__container__", "align": HorizontalAlign.End }}).gesture(PanGesture({fingers: 1,direction: PanDirection.Vertical,distance: 1}).onActionUpdate((event: GestureEvent) => {if (event) {this.offsetY = this.positionY + event.offsetYthis.rectHeight = this.originHeight - event.offsetY}}).onActionEnd((event: GestureEvent) => {this.positionX = this.offsetXthis.positionY = this.offsetYthis.originHeight = this.rectHeight;console.info('Pan end')}))Circle({ height: 10, width: 10 }).fill(Color.White).id("BottomCircle").stroke("#1a52e3").strokeWidth(2).margin({ left: 150 }).alignRules({"center": { "anchor": "__container__", "align": VerticalAlign.Bottom },"middle": { "anchor": "__container__", "align": HorizontalAlign.Start }}).gesture(PanGesture({fingers: 1,direction: PanDirection.Vertical,distance: 2}).onActionUpdate((event: GestureEvent) => {if (event && this.rectHeight > 15) {this.rectHeight = this.originHeight + event.offsetY}}).onActionEnd((event: GestureEvent) => {this.originHeight = this.rectHeight;console.info('Pan end')}))}.margin({ top: 20 }).height(this.rectHeight).width("80%").translate({ x: this.offsetX, y: this.offsetY, z: 0 }).gesture(PanGesture({fingers: 1,direction: PanDirection.Vertical,distance: 1}).onActionStart((event: GestureEvent) => {console.info('Pan start')}).onActionUpdate((event: GestureEvent) => {if (event) {this.offsetX = this.positionX + event.offsetXthis.offsetY = this.positionY + event.offsetY}}).onActionEnd((event: GestureEvent) => {this.positionX = this.offsetXthis.positionY = this.offsetYconsole.info('Pan end')}))}.height('100%').width('100%')}
}

代码解析

  • 通过PanGesture手势类和translate来实现组件的实时偏移。
  • 通过RelativeContainer来实现边缘的圆圈定位。
  • 实现矩形高度向上的方式是,增加高度的同时,往上偏移相同的距离

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

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

相关文章

Microsoft 官网免费下载安装正版官方增强版 office LSTC (长期支持版) 包含 visio , access

1.进入下方网址: https://www.microsoft.com/en-us/download/details.aspx?id49117 下载文件: officedeploymenttool_17126-20132.exe 现在看到下载链接可能失效了,但是下述步骤任然正确。需要下载文件的可以私信发送。 2.进入下方网址…

家具购物小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,家具分类管理,家具新品管理,订单管理,系统管理 微信端账号功能包括:系统首页,家具新品,家具公告&#xff0…

filament 初使用记录

安装初始化 一、环境准备 官网要的 我安装的 二、下载安装 安装laravel composer create-project --prefer-dist laravel/laravel 项目名称 10.*导入 filament composer require filament/filament注册 filament 管理面板 php artisan filament:install --panels初始化…

vue3前端开发-小兔鲜项目-登录组件的开发表单验证

vue3前端开发-小兔鲜项目-登录组件的开发表单验证&#xff01;现在开始写登录页面的内容。首先这一次完成基础的首页按钮点击跳转&#xff0c;以及初始化一些简单的表单的输入验证。后期还会继续完善内容。 1&#xff1a;首先还是准备好login页面的组件代码内容。 <script …

MySQL基础练习题7-销售分析

题目&#xff1a;报告 2019年春季 才售出的产品。即 仅 在 2019-01-01 &#xff08;含&#xff09;至 2019-03-31 &#xff08;含&#xff09;之间出售的商品。 准备数据 分析数据 方法一&#xff1a;group by having 第一步&#xff1a;先找到要求的列 第二步&#xff1…

CAN转PROFINET网关

型号&#xff1a;TCA-152 &#xff08;上海泗博自动化技术有限公司产品&#xff09; 基本说明&#xff1a;TCA-152可实现 PROFINET网络与CAN网络之间的数据通信。网关在PROFINET网络作为从站&#xff0c;CAN端支持CAN2.0A/CAN2.0B协议&#xff0c;支持对CAN帧进行过滤处理。 …

python 图片转文字、语音转文字、文字转语音保存音频并朗读

一、python图片转文字 1、引言 pytesseract是基于Python的OCR工具&#xff0c; 底层使用的是Google的Tesseract-OCR 引擎&#xff0c;支持识别图片中的文字&#xff0c;支持jpeg, png, gif, bmp, tiff等图片格式 2、环境配置 python3.6PIL库安装Google Tesseract OCR 3、安…

谷粒商城实战笔记-65-商品服务-API-品牌管理-表单校验自定义校验器

文章目录 1&#xff0c;el-form品牌logo图片自定义显示2&#xff0c;重新导入和注册element-ui组件3&#xff0c;修改brand-add-or-update.vue控件的表单校验规则firstLetter 校验规则sort 校验规则 1&#xff0c;el-form品牌logo图片自定义显示 为了在品牌列表中自定义显示品…

最新源支付系统源码 V7版全开源 免授权 附搭建教程

本文来自&#xff1a;最新源支付系统源码 V7版全开源 免授权 附搭建教程 - 源码1688 简介&#xff1a; 最新源支付系统源码_V7版全开源_免授权_附详细搭建教程_站长亲测 YPay是专为个人站长打造的聚合免签系统&#xff0c;拥有卓越的性能和丰富的功能。它采用全新轻量化的界面…

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间&#xff0c;随着商场规模的不断扩大和布局的日益复杂&#xff0c;顾客在享受丰富选择的同时&#xff0c;也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素&#xff0c;其重要…

堆的基本实现

一、堆的概念 在提出堆的概念之前&#xff0c;首先要了解二叉树的基本概念 一颗二叉树是节点的有限集合&#xff0c;该集合&#xff1a; 1、或者为空&#xff1b; 2、或者由一个根节点加上两颗分别称为左子树和右子树的两颗子树构成&#xff1b; 堆就是一颗完全二叉树&…

mybatis-plus实现分页功能

第一步&#xff1a;添加mybatis-plus为分页所使用的拦截器插件 &#xff08;不用这个的话sql里面的limit关键字无法实现&#xff0c;也就没办法实现查询操作&#xff09; 代码&#xff1a; Configuration public class mybatis_plus_config {Beanpublic MybatisPlusIntercept…

python-数水果(赛氪OJ)

[题目描述] 已知水果的种类共有 M 种&#xff0c;给出长度为 N 的序列&#xff0c;每个数字表示的是它是哪种水果。求每种水果各有多少个&#xff0c;按照对应编号从小到大的顺序输出。输入&#xff1a; 输入共两行&#xff1a;第一行包含两个整数 N,M(1 < N,M < 10000)&…

解决Firefox代理身份验证弹出窗口问题:C#和Selenium实战指南

引言 在使用Selenium和C#进行网页抓取时&#xff0c;遇到代理服务器的身份验证弹出窗口是一个常见的问题。这不仅会中断自动化流程&#xff0c;还会导致抓取任务失败。本文将提供一个实战指南&#xff0c;帮助开发者解决这个问题&#xff0c;并介绍如何在代码中设置代理IP、Us…

x-cmd mod | x man - man 命令增强

目录 简介例子1. 使用 fzf 列出当前系统上所有的 man 文档2. 显示 ssh 的 man 文档。如果不存在则显示搜索3. 显示 ssh 的 tldr 文档4. 使用交互式 UI 列出包含 "disk" 的 man 文档 使用选项子命令x man --explainx man --fzf 简介 man 模块的主要目的是提升用户查找…

【TypeScript学习打卡第一天】

介绍、常用类型 一、介绍1.概念2.TypeScript 为什么要为 JS 添加类型支持&#xff1f;3.ts的优势 二、ts初体验1.安装编译 TS 的工具包2.编译并运行 TS 代码3.简化运行 TS 的步骤 三、常用类型1.类型注解2.常用基础类型概述(1) 原始类型(2) 数组类型(3) 联合类型(4) 类型别名(5…

第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024,9月13-15)

第三届人工智能、物联网与云计算技术国际会议(AIoTC 2024)将于2024年9月13日-15日在中国武汉举行。 本次会议由华中师范大学伍伦贡联合研究院与南京大学联合主办、江苏省大数据区块链与智能信息专委会承办、江苏省概率统计学会、江苏省应用统计学会、Sir Forum、南京理工大学、…

JDK新特性(Lambda表达式,Stream流)

Lambda表达式&#xff1a; Lambda 表达式背后的思想是函数式编程&#xff08;Functional Programming&#xff09;思想。在传统的面向对象编程中&#xff0c;程序主要由对象和对象之间的交互&#xff08;方法调用&#xff09;构成&#xff1b;而在函数式编程中&#xff0c;重点…

postman给全部接口添加请求头数据(如token)

如果给没有一个接口添加请求头token就太慢了&#xff0c;如下图。可以点击所有接口的所属的目录。点击“Scripts”&#xff0c;点击Pre-request按钮。加入代码&#xff1a; pm.request.addHeader("Authorization:eyJhbGciOiJIUzI1NiIsInR5cCI111pXVCJ9.eyJjbGFpbXMiOnsiaW…