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

ops/2025/1/1 12:41:23/
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.ppmy.cn/ops/145983.html

相关文章

基于STM32的智能垃圾分类与投放系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 垃圾识别与分类模块投放指引模块数据存储与管理模块系统实现 硬件实现软件实现系统调试与优化结论与展望 1. 引言 随着城市垃圾管理问题日益严重&#xff0c;垃圾分类已成为提高资源回收效率、减少环境污染的重要手段。传统的…

SuperMap iClient3D for Cesium等高线标注

kele 前言 在三维地形分析中&#xff0c;等高线分析是一种非常重要的分析方法&#xff0c;它能直观的表达出地形的高低起伏特征&#xff0c;在三维系统中受到广泛应用。在SuperMap iClient3D for Cesium中&#xff0c;等高线分析是前端GPU分析&#xff0c;能够分析并渲染出等高…

如何使用流式渲染技术提升用户体验

提示:记录工作中遇到的需求及解决办法 文章目录 什么是流式渲染?Node.js 实现简单流式渲染声明式 Shadow DOM,不依赖 javascript 实现react 实现流式渲染总结提示:以下是本篇文章正文内容,下面案例可供参考 什么是流式渲染? 流式渲染主要思想是将HTML文档分块(chunk)…

更改 pnpm 的全局存储位置

pnpm 的全局存储位置可以通过配置来改变&#xff0c;默认情况下&#xff0c;pnpm 会将全局存储位置设置在系统盘的 AppData\Local\pnpm 目录下&#xff08;在 Windows 系统上&#xff09;。但是&#xff0c;用户可以通过配置来更改这个位置。以下是如何查看和设置 pnpm 的全局存…

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Kubernetes对象-标签和选择器

Kubernetes对象-标签和选择器 Kubernetes对象标签和选择器动机语法和字符集标签选择器基于等值的需求基于集合的需求 APILIST 和 WATCH 过滤在 API 对象中设置引用Service and ReplicationController支持基于集合的需求的资源选择节点集 高效使用标签更新标签 链接 Kubernetes对…

PaddlePaddle飞桨Linux系统Docker版安装

PaddlePaddle飞桨Linux系统Docker版安装 最近学习和了解PP飞桨&#xff0c;一切从安装开始。官网的安装教程很详细&#xff1a; https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/docker/linux-docker.html 记录我在安装过程中遇到的问题…

简单发布一个npm包

将自己封装的组件上传到 npm&#xff0c;并在其他项目中下载并使用&#xff0c;是一个非常有用的技能。看完下面这些你就可以自己完成从封装组件到上传 npm 并使用的全过程。 1: 封装组件 首先&#xff0c;你需要创建一个符合标准的 npm 包。假设你已经写好了组件代码&#xf…