Эх сурвалжийг харах

点击艺术家返回的滚动位置也记录之前的的位置

onecold 1 жил өмнө
parent
commit
9981bf8367

+ 6 - 6
build-profile.json5

@@ -30,11 +30,11 @@
         "material": {
           "certpath": "C:\\Users\\xjy08\\.ohos\\config\\default_com.xgplayer.ttmusic.hm4_li00v0NJ2KHEZXa_MEhSBo4Q7SMa2KHpzKM8lnBZT1Y=.cer",
           "keyAlias": "debugKey",
-          "keyPassword": "0000001A543624345010BDB78B9F87C42612E438AA1525C7BC6DFC8CD449DEDFD44E55D9C27D91688DE4",
+          "keyPassword": "0000001BAEFCFA4794A65008A888BD23285D3BFCEE596FFC2946D515EBF69695318A6F3359B22723B7F54E",
           "profile": "C:\\Users\\xjy08\\.ohos\\config\\default_com.xgplayer.ttmusic.hm4_li00v0NJ2KHEZXa_MEhSBo4Q7SMa2KHpzKM8lnBZT1Y=.p7b",
           "signAlg": "SHA256withECDSA",
           "storeFile": "C:\\Users\\xjy08\\.ohos\\config\\default_com.xgplayer.ttmusic.hm4_li00v0NJ2KHEZXa_MEhSBo4Q7SMa2KHpzKM8lnBZT1Y=.p12",
-          "storePassword": "0000001AF9FE996380EE4AA8DB48D88C53A8F9A623B0B48F806156F79A5F7FCCCC1E07A9677CC201F4C5"
+          "storePassword": "0000001B1DBD1DCB5B890E540146D6CA7BBF074F21FE233A96D61631AF1DB8A2C4BC9F91CBB719FE575C12"
         }
       }
     ]
@@ -52,10 +52,10 @@
         }
       ]
     },
-//    {
-//      "name": "ijkplayer",
-//      "srcPath": "./ijkplayer"
-//    },////注释掉这个代码,用ohpm install @ohos/ijkplayer去装2.0.6版本
+    //    {
+    //      "name": "ijkplayer",
+    //      "srcPath": "./ijkplayer"
+    //    },////注释掉这个代码,用ohpm install @ohos/ijkplayer去装2.0.6版本
     {
       "name": "lib",
       "srcPath": "./lib"

+ 40 - 10
entry/src/main/ets/view/LocalMusic.ets

@@ -167,7 +167,7 @@ export struct LocalMusic {
   @State artistMap: Map<string, VideoItem[]> = new Map(); //艺术家Map
   @State albumList: Array<VideoItem> = []; //专辑文件
   @State albumMap: Map<string, VideoItem[]> = new Map(); //专辑Map
-  private albumScrollMap: Map<string, number> = new Map(); // 专辑名->滚动index
+  private mScrollMap: Map<string, number> = new Map(); // 艺术家、专辑名->滚动index
   @State imageOpacities: number[] = [];
   @Consume isCanBack: boolean
   @Consume @Watch('onModeChange') modeType: number; // 0首页,1媒体库,2艺术家,3专辑
@@ -386,13 +386,24 @@ export struct LocalMusic {
       this.titleBarModel.setLeftIconMain($r('app.media.menu'))
       // 返回专辑列表时恢复滚动偏移量,支持列表和网格
       setTimeout(() => {
-        if (this.isGridMusic) {
-          let lastOffset = this.albumScrollMap.get('lastGridScrollOffset') ?? 0
-          this.scroller.scrollTo({ xOffset: 0, yOffset: lastOffset })
-        } else {
-          let lastOffset = this.albumScrollMap.get('lastListScrollOffset') ?? 0
-          this.listScroller.scrollTo({ xOffset: 0, yOffset: lastOffset })
+        if(this.modeType ==2){
+          if (this.isGridMusic) {
+            let lastOffset = this.mScrollMap.get('lastGridArtistScrollOffset') ?? 0
+            this.scroller.scrollTo({ xOffset: 0, yOffset: lastOffset })
+          } else {
+            let lastOffset = this.mScrollMap.get('lastListArtistScrollOffset') ?? 0
+            this.listScroller.scrollTo({ xOffset: 0, yOffset: lastOffset })
+          }
+        }else if(this.modeType ==3){
+          if (this.isGridMusic) {
+            let lastOffset = this.mScrollMap.get('lastGridAlBumScrollOffset') ?? 0
+            this.scroller.scrollTo({ xOffset: 0, yOffset: lastOffset })
+          } else {
+            let lastOffset = this.mScrollMap.get('lastListAlBumScrollOffset') ?? 0
+            this.listScroller.scrollTo({ xOffset: 0, yOffset: lastOffset })
+          }
         }
+
       }, 200)
       return
     }
@@ -3802,6 +3813,25 @@ export struct LocalMusic {
         }
         break;
       case CommonConstants.TYPE_IS_ARTIST:
+        // 进入专辑前安全保存当前滚动偏移量,支持列表和网格
+        let offsetA = 0
+        if (this.isGridMusic) {
+          if (this.scroller && typeof this.scroller.currentOffset === 'function') {
+            let cur = this.scroller.currentOffset()
+            if (cur && typeof cur.yOffset === 'number') {
+              offsetA = cur.yOffset
+            }
+          }
+          this.mScrollMap.set('lastGridArtistScrollOffset', offsetA)
+        } else {
+          if (this.listScroller && typeof this.listScroller.currentOffset === 'function') {
+            let cur = this.listScroller.currentOffset()
+            if (cur && typeof cur.yOffset === 'number') {
+              offsetA = cur.yOffset
+            }
+          }
+          this.mScrollMap.set('lastListArtistScrollOffset', offsetA)
+        }
         let mList = this.artistMap.get(item.name)
         if (mList !== undefined && ArrayUtil.isNotEmpty(mList)) {
           Utility.doSortListAscending(mList)
@@ -3822,7 +3852,7 @@ export struct LocalMusic {
               offset = cur.yOffset
             }
           }
-          this.albumScrollMap.set('lastGridScrollOffset', offset)
+          this.mScrollMap.set('lastGridAlBumScrollOffset', offset)
         } else {
           if (this.listScroller && typeof this.listScroller.currentOffset === 'function') {
             let cur = this.listScroller.currentOffset()
@@ -3830,7 +3860,7 @@ export struct LocalMusic {
               offset = cur.yOffset
             }
           }
-          this.albumScrollMap.set('lastListScrollOffset', offset)
+          this.mScrollMap.set('lastListAlBumScrollOffset', offset)
         }
         let albumList = this.albumMap.get(item.name)
         if (albumList !== undefined && ArrayUtil.isNotEmpty(albumList)) {
@@ -3839,7 +3869,7 @@ export struct LocalMusic {
           this.titleBarModel.setTitleName(item.name)
           this.updateListData(albumList)
           this.titleBarModel.setLeftIconMain($r('app.media.left_back_white'))
-          this.albumScrollMap.set(item.name, this.selectedIndex)
+          this.mScrollMap.set(item.name, this.selectedIndex)
         }
 
         break;

+ 20 - 1
oh-package-lock.json5

@@ -1,6 +1,7 @@
 {
   "meta": {
-    "stableOrder": true
+    "stableOrder": true,
+    "enableUnifiedLockfile": false
   },
   "lockfileVersion": 3,
   "ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
@@ -10,6 +11,7 @@
     "@changwei/chardet@^1.0.0": "@changwei/chardet@1.0.0",
     "@chinalike/popup@^0.0.7": "@chinalike/popup@0.0.7",
     "@keke/color-picker@^1.0.4": "@keke/color-picker@1.0.4",
+    "@ohos/ijkplayer@^2.0.6": "@ohos/ijkplayer@2.0.6",
     "@ohos/lottie@^2.0.19": "@ohos/lottie@2.0.19",
     "@ohos/pinyin4js@^2.0.2": "@ohos/pinyin4js@2.0.2",
     "@ohos/pulltorefresh@^2.1.1": "@ohos/pulltorefresh@2.1.1",
@@ -22,6 +24,7 @@
     "@taobao-ohos/utdid_sdk@oh_modules/.ohpm/@cashier_alipay+cashiersdk@15.8.32/oh_modules/@cashier_alipay/cashiersdk/lib/utdid_sdk-1.0.9.har": "@taobao-ohos/utdid_sdk@oh_modules/.ohpm/@cashier_alipay+cashiersdk@15.8.32/oh_modules/@cashier_alipay/cashiersdk/lib/utdid_sdk-1.0.9.har",
     "class-transformer@^0.5.1": "class-transformer@0.5.1",
     "libblueshield.so@oh_modules/.ohpm/@alipay+blueshieldsdk@cow+0gass5tzqhymzjby2f6sd+g2xtoatqsiyvi9qsy=/oh_modules/@alipay/blueshieldsdk/src/main/cpp/types/libblueshield": "libblueshield.so@oh_modules/.ohpm/@alipay+blueshieldsdk@cow+0gass5tzqhymzjby2f6sd+g2xtoatqsiyvi9qsy=/oh_modules/@alipay/blueshieldsdk/src/main/cpp/types/libblueshield",
+    "libijkplayer_audio_napi.so@oh_modules/.ohpm/@ohos+ijkplayer@2.0.6/oh_modules/@ohos/ijkplayer/src/main/cpp/types/ijkplayer_audio_napi": "libijkplayer_audio_napi.so@oh_modules/.ohpm/@ohos+ijkplayer@2.0.6/oh_modules/@ohos/ijkplayer/src/main/cpp/types/ijkplayer_audio_napi",
     "liblrcparser.so@oh_modules/.ohpm/@sgaolei+lrc_parser@1.0.0/oh_modules/@sgaolei/lrc_parser/src/main/cpp/types/liblrcparser": "liblrcparser.so@oh_modules/.ohpm/@sgaolei+lrc_parser@1.0.0/oh_modules/@sgaolei/lrc_parser/src/main/cpp/types/liblrcparser",
     "pako@^2.1.0": "pako@2.1.0"
   },
@@ -68,6 +71,16 @@
       "resolved": "https://repo.harmonyos.com/ohpm/@keke/color-picker/-/color-picker-1.0.4.har",
       "registryType": "ohpm"
     },
+    "@ohos/ijkplayer@2.0.6": {
+      "name": "@ohos/ijkplayer",
+      "version": "2.0.6",
+      "integrity": "sha512-xDRUkxAgfdYA2opvE/2fxbMHaiLDx8ROmN8WDCJW+m41z1z53477MiyeLTQtfvxlbI3VOMR7MD39FsbiaJpnvg==",
+      "resolved": "https://repo.harmonyos.com/ohpm/@ohos/ijkplayer/-/ijkplayer-2.0.6.har",
+      "registryType": "ohpm",
+      "dependencies": {
+        "libijkplayer_audio_napi.so": "file:./src/main/cpp/types/ijkplayer_audio_napi"
+      }
+    },
     "@ohos/lottie@2.0.19": {
       "name": "@ohos/lottie",
       "version": "2.0.19",
@@ -159,6 +172,12 @@
       "resolved": "oh_modules/.ohpm/@alipay+blueshieldsdk@cow+0gass5tzqhymzjby2f6sd+g2xtoatqsiyvi9qsy=/oh_modules/@alipay/blueshieldsdk/src/main/cpp/types/libblueshield",
       "registryType": "local"
     },
+    "libijkplayer_audio_napi.so@oh_modules/.ohpm/@ohos+ijkplayer@2.0.6/oh_modules/@ohos/ijkplayer/src/main/cpp/types/ijkplayer_audio_napi": {
+      "name": "libijkplayer_audio_napi.so",
+      "version": "2.0.3-rc.3",
+      "resolved": "oh_modules/.ohpm/@ohos+ijkplayer@2.0.6/oh_modules/@ohos/ijkplayer/src/main/cpp/types/ijkplayer_audio_napi",
+      "registryType": "local"
+    },
     "liblrcparser.so@oh_modules/.ohpm/@sgaolei+lrc_parser@1.0.0/oh_modules/@sgaolei/lrc_parser/src/main/cpp/types/liblrcparser": {
       "name": "liblrcparser.so",
       "version": "1.0.0",

+ 2 - 1
oh-package.json5

@@ -23,7 +23,8 @@
     "@keke/color-picker": "^1.0.4",
     "@sgaolei/lrc_parser": "^1.0.0",
     "@ohos/pinyin4js": "^2.0.2",
-    "@simplepeng/spider-man": "^1.0.1"
+    "@simplepeng/spider-man": "^1.0.1",
+    "@ohos/ijkplayer": "^2.0.6"
   },
   "dynamicDependencies": {}
 }