【每日学点鸿蒙知识】grid里面的item支持拖动问题、WebView回调问题、获取页面名称、弹幕效果实现、修改App输出路径 |

1、HarmonyOS grid里面的item支持拖动问题?

想要grid里面的item支持拖动,拖出来后可以删除,下面的代码就是你们上次给我提供的,正常情况下是可以使用的但是,往下拖的过程中遇到了TextInput后,gridItem的onDragMove就不会走了,我给TextInput设置了draggable(false)后无法解决

import { media } from '@kit.MediaKit';
import { BusinessError } from '@kit.BasicServicesKit';import util from '@ohos.util';
import { curves } from '@kit.ArkUI';@Entry
@Component
struct Index {@State numbers: number[] = []@State isTextInputVisible: boolean = true@State isGridItemVisible: Visibility = Visibility.Visiblescroller: Scroller = new Scroller()@State enableScroll: boolean = true@State scaleItem: number = -1@State dragItem: number = -1@State offsetX: number = 0@State offsetY: number = 0@State currentY: number = 0private dragRefOffsetx: number = 0private dragRefOffsety: number = 0private FIX_VP_X: number = 108private FIX_VP_Y: number = 120aboutToAppear() {for (let i = 1; i <= 11; i++) {this.numbers.push(i)}}//向左滑left(index: number): void {this.offsetX += this.FIX_VP_Xthis.dragRefOffsetx -= this.FIX_VP_Xthis.itemMove(index, index - 1)}//向右滑right(index: number): void {this.offsetX -= this.FIX_VP_Xthis.dragRefOffsetx += this.FIX_VP_Xthis.itemMove(index, index + 1)}itemMove(index: number, newIndex: number): void {console.info('index:' + index + ' newIndex:' + newIndex)let tmp = this.numbers.splice(index, 1)this.numbers.splice(newIndex, 0, tmp[0])}build() {Column({ space: 5 }) {Grid(this.scroller) {ForEach(this.numbers, (item: number) => {GridItem() {Text(item + '').fontSize(16).width('100%').textAlign(TextAlign.Center).height(100).borderRadius(10).backgroundColor(0xFFFFFF).animation({ curve: Curve.Sharp, duration: 300 })}.visibility(this.dragItem == item ? Visibility.Hidden : Visibility.Visible) // 根据被拖动的item来设置visibility.width(100).height(100).padding(5).zIndex(this.dragItem == item ? 1 : 0).scale({ x: this.scaleItem == item ? 1.05 : 1, y: this.scaleItem == item ? 1.05 : 1 }).translate(this.dragItem == item ? { x: this.offsetX, y: this.offsetY } : { x: 0, y: 0 }).onDragStart((event: DragEvent, extraParams?: string) => {animateTo({ curve: Curve.Friction, duration: 300 }, () => {this.scaleItem = item})this.dragItem = itemthis.dragRefOffsetx = event.getWindowX()this.dragRefOffsety = event.getWindowY()}).onDrop((event: DragEvent, extraParams?: string) => {}).onDragMove((event: DragEvent, extraParams?: string) => {this.enableScroll = falseconsole.log('onDragMove GridItem getWindowX', event.getWindowX())console.log('onDragMove GridItem getWindowY', event.getWindowY())this.offsetX = event.getWindowX() - this.dragRefOffsetxthis.offsetY = event.getWindowY() - this.dragRefOffsetythis.currentY = event.getWindowY()console.log('onDragMove GridItem offsetX', this.currentY)animateTo({ curve: curves.interpolatingSpring(0, 1, 400, 38) }, () => {let index = this.numbers.indexOf(this.dragItem)console.log('index', index)if (this.offsetX >= this.FIX_VP_X / 2 && this.offsetY < this.FIX_VP_Y) {this.right(index)} else if (this.offsetX <= -this.FIX_VP_X / 2 && this.offsetY < this.FIX_VP_Y) {this.left(index)}})this.isGridItemVisible = Visibility.Hidden}).onDragEnd(() => {this.enableScroll = truethis.isTextInputVisible = truethis.isGridItemVisible = Visibility.VisibleanimateTo({ curve: curves.interpolatingSpring(0, 1, 400, 38) }, () => {this.dragItem = -1this.scaleItem = -1})})}, (item: number) => item.toString())}.padding({ left: 20, right: 20 }).width('100%').height('120').scrollBar(BarState.Off).rowsTemplate('1fr').columnsGap(5).editMode(true).edgeEffect(EdgeEffect.Spring).backgroundColor('#0D182431').enabled(this.enableScroll)// Modified TextInput to ignore drag eventsTextInput({placeholder: '添加标题'}).width('100%').height(200)// .visibility(this.isTextInputVisible ? Visibility.Visible : Visibility.Hidden)// .onDragMove(() => {// // 隐藏TextInput// this.isTextInputVisible = false// })Text('删除').width('100%').height(50).backgroundColor(Color.Red).position({ bottom: 0 }).visibility(this.currentY > 580 ? Visibility.Visible : Visibility.Hidden).hitTestBehavior(HitTestMode.None)}.width('100%').height('100%').margin({ top: 5 }).backgroundColor('#0D182431')}
}
2、HarmonyOS Webview的onErrorReceive里回调的错误码,和文档里对不上?

Webview的onErrorReceive里回调的错误码,和文档里对不上:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/errorcode-webview-V5
有的返回-2,有的返回-106,有的-302。

参考以下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-neterrorlist-V5

3、HarmonyOS 如何通过context: common.Context获取页面的名称和唯一性?
  • 在当前页面可以使用router.getstat来获取页面名称:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-router-V5
  • 使用getStringValue获取标识:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5
4、HarmonyOS 咨询文本动效、点击从某个位置显示Text并向上Y移动一定距离后自动隐藏;并在连续快速点击时,多个Text显示并根据点击的间隔时间,依次向上位置一段距离并隐藏,实现类似弹幕效果?

Text组件文本动效、点击从某个位置显示Text并向上Y移动一定距离后自动隐藏;并在连续快速点击时,多个Text显示并根据点击的间隔时间,依次向上位置一段距离并隐藏,实现类似弹幕效果。

参考下面的方法:

  1. 创建Image组件点击时文本出现
  2. 文本用@buildPrams,每点击一次出现文字
  3. 文本特效可以借助transition实现
5、构建app或者hap时,时如何修改输出路径和名称?
  • 包名称可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-customized-multi-targets-and-products-guides-V5#section329173315468
  • ohos.buildDir可配置产物存放路径,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-set-options-V5

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

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

相关文章

SDK 指南

在前端开发中&#xff0c;SDK&#xff08;Software Development Kit&#xff0c;软件开发工具包&#xff09;是一个用于帮助开发者在特定平台、框架或技术栈中实现某些功能的工具集。 1. SDK 是什么&#xff1f; SDK 是一种开发工具包&#xff0c;它提供了开发人员实现某些功…

Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)

前言 Unity3d的UGUI系统与Web前端开发中常见的数据绑定和属性绑定机制有所不同。UGUI是一个相对简单和基础的UI系统&#xff0c;并不内置像Web前端&#xff08;例如 Vue.js或React中&#xff09;那样的双向数据绑定或自动更新UI的机制。UGUI是一种比较传统的 UI 系统&#xff…

OptimisticLock

想象你和你的朋友去了一家很受欢迎的餐厅。你们想要点一份特别的菜品——这家餐厅的招牌菜&#xff0c;但因为这道菜非常受欢迎&#xff0c;所以它的状态可能会随时变化&#xff08;比如售罄或重新上架&#xff09;。 传统方式&#xff08;悲观锁&#xff09; 通常情况下&…

10分钟掌握项目管理核心工具:WBS、甘特图、关键路径法全解析

一、引言 在项目管理的广阔天地里&#xff0c;犹如一场精心编排的交响乐演奏&#xff0c;每个乐器、每个音符都需精准配合才能奏响美妙乐章。而 WBS&#xff08;工作分解结构&#xff09;、甘特图、关键路径法无疑是这场交响乐中的关键乐章&#xff0c;它们从不同维度为项目管…

TCP 和 UDP 的区别:解析网络传输协议

引言 在计算机网络的世界中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;和 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是两种极为重要且应用广泛的传输层协议。它们在功能、特性以及适…

代码思想之快慢路径

处理业务代码的过程中&#xff0c;对业务代码有了一些调整&#xff0c;后续发现这是一种代码思想 在一段复杂的逻辑里&#xff0c;我把查询redis操作写在了前面&#xff0c; 业务逻辑&#xff1a; 如果需要不打压就退出本次处理 查询redis拿到商品需要打压的次数 如果次数 …

Java 溯本求源之基础(三十一)——泛型

目录 1. 泛型的定义与基本概念 2. 泛型的优势 3. 泛型的基本语法 3.1 泛型类 3.2 泛型方法 3.3 泛型接口 4. 泛型的边界 4.1 上限通配符&#xff08;? extends T&#xff09; 4.2 下限通配符&#xff08;? super T&#xff09; 5. 泛型的类型擦除 6. 泛型的使用场景…

纯 HTML+CSS+JS 实现一个炫酷的圣诞树动画特效

纯 HTMLCSSJS 实现一个炫酷的圣诞树动画特效 前言 圣诞节快到了&#xff0c;今天给大家带来一个简单但是效果不错的圣诞树动画特效。这个特效完全使用原生 HTML、CSS 和 JavaScript 实现&#xff0c;包含闪烁的星星、随机彩灯等元素&#xff0c;非常适合节日气氛&#xff01;…

Maven:Java项目构建与管理的利器

在Java开发领域&#xff0c;Maven无疑是一个举足轻重的工具。它不仅简化了项目的构建和依赖管理&#xff0c;还促进了团队协作和持续集成。本文将深入探讨Maven的核心功能、基本配置以及在实际项目中的应用。 Maven简介 Maven是Apache基金会下的一个开源项目&#xff0c;旨在…

【ES6复习笔记】Promise对象详解(12)

1. 什么是 Promise&#xff1f; Promise 是 JavaScript 中处理异步操作的一种机制&#xff0c;它可以让异步操作更加容易管理和控制。Promise 对象代表一个异步操作的最终完成或失败&#xff0c;并提供了一种方式来处理操作的结果。 2. Promise 的基本语法 Promise 对象有三…

【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术&#xff0c;通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地&#xff0c;语言模型可根据上下文中已出现的词序列&#xff0c;使用概率推断来预测接…

【ES6复习笔记】Map(14)

概念 Map 是 JavaScript 中的一种数据结构&#xff0c;它允许你存储键值对&#xff0c;并且可以通过键来访问对应的值。在本教程中&#xff0c;我们将学习如何声明、添加、删除、获取和遍历 Map 集合。 ES6 提供了 Map 数据结构。它类似于对象&#xff0c;也是键值对的集合。…

富芮坤FR800X系列之PWM输出程序应用设计

文章目录 前言1.设计背景2.简介3.如何设计控制调光的接口呢4.硬件设计5.软件设计5.1.软件流程图5.2.软件代码 6.小结 前言 版权归作者所有、未经允许、请勿转载。 读者对象&#xff1a; 本文档主要适用以下工程师&#xff1a; 嵌入式系统工程师 单片机软件工程师 IOT固…

Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道

一、专业数据摆渡系统对企业的意义 专业的数据摆渡系统对企业具有重要意义&#xff0c;主要体现在以下几个方面‌&#xff1a; 1、‌数据安全性‌&#xff1a;数据摆渡系统通过加密传输、访问控制和审计日志等功能&#xff0c;确保数据在传输和存储过程中的安全性。 2、‌高…

EasyPoi 使用$fe:模板语法生成Word动态行

1 Maven 依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.0.0</version> </dependency> 2 application.yml spring:main:allow-bean-definition-over…

定义Shape:打造属于你的独特图形

自定义Shape:打造属于你的独特图形 在Android开发中,自定义图形绘制是一个非常重要的技能,尤其是在需要实现复杂UI或特定设计需求时。Android提供了android.graphics.drawable.shapes包,其中包含了一些基本的形状类,如RectShape、OvalShape等。然而,有时这些基本形状无法…

python 渗透开发工具之SQLMapApi Server不同IP服务启动方式处理 解决方案SqlMapApiServer外网不能访问的情况

目录 说在前面 什么是 SQLMapAPI 说明 sqlmapApi能干什么 sqlmapApi 服务安装相关 kali-sqlmap存放位置 正常启动sqlmap-api server SqlMapApi-Server 解决外网不能访问情况 说在前面 什么是sqlmap 这个在前面已经说过了&#xff0c;如果这个不知道&#xff0c;就可以…

【基础还得练】 KKT 条件

优秀教程-真正理解拉格朗日乘子法和 KKT 条件&#xff1a; link优秀教程-最优化(6)&#xff1a;一般约束优化问题的最优性理论&#xff1a; link KKT条件&#xff08;Karush-Kuhn-Tucker条件&#xff09;是非线性规划中的一组必要条件&#xff0c;在某些情况下也是最优解的充分…

使用 Webpack 优雅的构建微前端应用❕

Module Federation 通常译作“模块联邦”&#xff0c;是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式&#xff0c;理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…

Boost之log日志使用

不讲理论&#xff0c;直接上在程序中可用代码&#xff1a; 一、引入Boost模块 开发环境&#xff1a;Visual Studio 2017 Boost库版本&#xff1a;1.68.0 安装方式&#xff1a;Nuget 安装命令&#xff1a; #只安装下面几个即可 Install-package boost -version 1.68.0 Install…