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顯示并根據點擊的間隔時間,依次向上位置一段距離并隱藏,實現類似彈幕效果。
參考下面的方法:
- 創建Image組件點擊時文本出現
- 文本用@buildPrams,每點擊一次出現文字
- 文本特效可以借助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