diff --git a/CHANGELOG.md b/CHANGELOG.md index 94b0875..843f04d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2.1.2-rc.12 +- 新增磁盘预加载返回文件路径接口prefetchToDiskCache + ## 2.1.2-rc.11 - 修复设置磁盘容量最大值出现闪退 - 修复概率出现jscrash问题 diff --git a/entry/oh-package.json5 b/entry/oh-package.json5 index 0843af8..113d186 100644 --- a/entry/oh-package.json5 +++ b/entry/oh-package.json5 @@ -4,7 +4,7 @@ "name": "entry", "description": "example description", "repository": {}, - "version": "2.1.2-rc.11", + "version": "2.1.2-rc.12", "dependencies": { "@ohos/libraryimageknife": "file:../sharedlibrary", "@ohos/sharedlibrary2": "file:../sharedlibrary2", diff --git a/entry/src/main/ets/pages/imageknifeTestCaseIndex.ets b/entry/src/main/ets/pages/imageknifeTestCaseIndex.ets index e8d27e6..4a1563a 100644 --- a/entry/src/main/ets/pages/imageknifeTestCaseIndex.ets +++ b/entry/src/main/ets/pages/imageknifeTestCaseIndex.ets @@ -124,12 +124,6 @@ struct IndexFunctionDemo { console.log("测试一级内存缓存") router.pushUrl({ url: "pages/testReusePhotoPage" }); }).margin({ top: 5, left: 3 }) - Button("测试所有缓存信息输出") - .onClick(() => { - console.log("pages/testAllCacheInfoPage 页面跳转") - router.pushUrl({ url: "pages/testAllCacheInfoPage" }); - }).margin({ top: 5, left: 3 }) - }.width('100%') .height(60).backgroundColor(Color.Pink) Text("测试占位图 失败占位图 功能点").fontSize(15) @@ -148,6 +142,11 @@ struct IndexFunctionDemo { console.log("测试预加载") router.pushUrl({ url: "pages/testPreloadPage" }); }).margin({ top: 5, left: 3 }) + Button("测试磁盘预加载返回string") + .onClick(() => { + console.log("测试预加载测试磁盘预加载返回string") + router.pushUrl({ url: "pages/testDiskPreLoadPage" }); + }).margin({ top: 5, left: 3 }) }.width('100%').height(60).backgroundColor(Color.Pink) diff --git a/entry/src/main/ets/pages/testDiskPreLoadPage.ets b/entry/src/main/ets/pages/testDiskPreLoadPage.ets new file mode 100644 index 0000000..fb52d2d --- /dev/null +++ b/entry/src/main/ets/pages/testDiskPreLoadPage.ets @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ImageKnife,ImageKnifeGlobal,ImageKnifeOption,ImageKnifeComponent} from '@ohos/libraryimageknife' + +@Entry +@Component +struct DiskPreLoadPage { + + @State imageKnifeOption2: ImageKnifeOption = + { + loadSrc: $r('app.media.icon'), + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + }; + + build() { + Row() { + Column() { + Button("预加载图片").onClick(()=>{ + let imageKnife: ImageKnife | undefined = ImageKnifeGlobal.getInstance().getImageKnife(); + if(imageKnife != undefined){ + imageKnife.prefetchToDiskCache("https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658") + .then((resolve)=>{ + console.log("成功回调 : " + resolve) + }) + .catch((reject: ESObject) => { + console.log("失败回调 : " + reject) + }) + } + }) + Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Button("加载GIF") + .onClick(() => { + this.imageKnifeOption2 = { + loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + displayProgress:true, + } + }).margin({ top: 5, left: 3 }) + ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption2 }).width(300).height(300) + }.width('100%').backgroundColor(Color.Pink) + } + .width('100%') + } + .height('100%') + } +} \ No newline at end of file diff --git a/entry/src/main/ets/pages/testPreloadPage.ets b/entry/src/main/ets/pages/testPreloadPage.ets index 62a16be..acb3f61 100644 --- a/entry/src/main/ets/pages/testPreloadPage.ets +++ b/entry/src/main/ets/pages/testPreloadPage.ets @@ -30,7 +30,7 @@ struct TestPreloadPage { placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), - + }; @State imageKnifeOption: ImageKnifeOption = { @@ -38,7 +38,7 @@ struct TestPreloadPage { placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), - + }; @State imageKnifeOption3: ImageKnifeOption = { @@ -46,7 +46,7 @@ struct TestPreloadPage { placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), - + }; @State imageKnifeOption4: ImageKnifeOption = @@ -55,7 +55,7 @@ struct TestPreloadPage { placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), - + }; @State imageKnifeOption5: ImageKnifeOption = { @@ -63,7 +63,7 @@ struct TestPreloadPage { placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), - + }; @State imageKnifeOption6: ImageKnifeOption = { @@ -71,7 +71,7 @@ struct TestPreloadPage { placeholderSrc: $r('app.media.icon_loading'), errorholderSrc: $r('app.media.icon_failed'), - + }; build() { @@ -88,59 +88,59 @@ struct TestPreloadPage { if (err) { console.log('预加载本地资源gif 出现错误! err=' + err) } else { - console.log('预加载本地资源gif成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + console.log('预加载本地资源gif成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源gif') .onClick(() => { - this.imageKnifeOption1 = { - loadSrc: $r('app.media.gifSample'), + this.imageKnifeOption1 = { + loadSrc: $r('app.media.gifSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - } + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), - }) + } + + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('预加载本地资源gif静态') .onClick(() => { - let request = new RequestOption(); - request.load($r('app.media.gifSample')) - .setImageViewSize({ width: 300, height: 300 }) - .dontAnimate() - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err ) { - console.log('预加载本地资源gif静态 出现错误! err=' + err) - } else { - console.log('预加载本地资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load($r('app.media.gifSample')) + .setImageViewSize({ width: 300, height: 300 }) + .dontAnimate() + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err ) { + console.log('预加载本地资源gif静态 出现错误! err=' + err) + } else { + console.log('预加载本地资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源gif静态') .onClick(() => { - this.imageKnifeOption1 = { - loadSrc: $r('app.media.gifSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - dontAnimateFlag: true - } + this.imageKnifeOption1 = { + loadSrc: $r('app.media.gifSample'), + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + dontAnimateFlag: true + } - }) + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) } @@ -150,64 +150,64 @@ struct TestPreloadPage { Button('预加载网络资源gif') .onClick(() => { - let request = new RequestOption(); - request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') - .setImageViewSize({ width: 300, height: 300 }) - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源gif 出现错误! err=' + err) - } else { - console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') + .setImageViewSize({ width: 300, height: 300 }) + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源gif 出现错误! err=' + err) + } else { + console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源gif') .onClick(() => { - this.imageKnifeOption1 = { - loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', + this.imageKnifeOption1 = { + loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('预加载网络资源gif静态') .onClick(() => { - let request = new RequestOption(); - request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') - .setImageViewSize({ width: 300, height: 300 }) - .dontAnimate() - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源gif静态 出现错误! err=' + err) - } else { - console.log('预加载网络资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') + .setImageViewSize({ width: 300, height: 300 }) + .dontAnimate() + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源gif静态 出现错误! err=' + err) + } else { + console.log('预加载网络资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源gif静态') .onClick(() => { - this.imageKnifeOption1 = { - loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', + this.imageKnifeOption1 = { + loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - dontAnimateFlag: true - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + dontAnimateFlag: true + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) } @@ -228,27 +228,27 @@ struct TestPreloadPage { if (err ) { console.log('预加载本地资源svg 出现错误! err=' + err) } else { - console.log('预加载本地资源svg成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + console.log('预加载本地资源svg成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源svg') .onClick(() => { - this.imageKnifeOption = { - loadSrc: $r('app.media.svgSample'), + this.imageKnifeOption = { + loadSrc: $r('app.media.svgSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - } + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), - }) + } + + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) @@ -275,32 +275,32 @@ struct TestPreloadPage { Button('预加载网络资源svg') .onClick(() => { - let request = new RequestOption(); - request.load(this.svgUrl) - .setImageViewSize({ width: 300, height: 300 }) - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源gif 出现错误! err=' + err) - } else { - console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load(this.svgUrl) + .setImageViewSize({ width: 300, height: 300 }) + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源gif 出现错误! err=' + err) + } else { + console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源svg') .onClick(() => { - this.imageKnifeOption = { - loadSrc: this.svgUrl, + this.imageKnifeOption = { + loadSrc: this.svgUrl, - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) @@ -323,27 +323,27 @@ struct TestPreloadPage { if (err) { console.log('预加载本地资源webp 出现错误! err=' + err) } else { - console.log('预加载本地资源webp成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + console.log('预加载本地资源webp成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源webp') .onClick(() => { - this.imageKnifeOption3 = { - loadSrc: $r('app.media.jpgSample'), + this.imageKnifeOption3 = { + loadSrc: $r('app.media.jpgSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - } + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), - }) + } + + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) @@ -355,32 +355,32 @@ struct TestPreloadPage { Button('预加载网络资源webp') .onClick(() => { - let request = new RequestOption(); - request.load('https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp') - .setImageViewSize({ width: 300, height: 300 }) - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源webp 出现错误! err=' + err) - } else { - console.log('预加载网络资源webp成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load('https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp') + .setImageViewSize({ width: 300, height: 300 }) + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源webp 出现错误! err=' + err) + } else { + console.log('预加载网络资源webp成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源webp') .onClick(() => { - this.imageKnifeOption3 = { - loadSrc: 'https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp', + this.imageKnifeOption3 = { + loadSrc: 'https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp', - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) } @@ -401,27 +401,27 @@ struct TestPreloadPage { if (err) { console.log('预加载本地资源bmp 出现错误! err=' + err) } else { - console.log('预加载本地资源bmp成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + console.log('预加载本地资源bmp成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源bmp') .onClick(() => { - this.imageKnifeOption4 = { - loadSrc: $r('app.media.bmpSample'), + this.imageKnifeOption4 = { + loadSrc: $r('app.media.bmpSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - } + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), - }) + } + + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) @@ -433,32 +433,32 @@ struct TestPreloadPage { Button('预加载网络资源bmp') .onClick(() => { - let request = new RequestOption(); - request.load('https://img-blog.csdn.net/20140514114029140') - .setImageViewSize({ width: 300, height: 300 }) - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源bmp 出现错误! err=' + err) - } else { - console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load('https://img-blog.csdn.net/20140514114029140') + .setImageViewSize({ width: 300, height: 300 }) + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源bmp 出现错误! err=' + err) + } else { + console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源bmp') .onClick(() => { - this.imageKnifeOption4 = { - loadSrc: 'https://img-blog.csdn.net/20140514114029140', + this.imageKnifeOption4 = { + loadSrc: 'https://img-blog.csdn.net/20140514114029140', - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) } @@ -479,27 +479,27 @@ struct TestPreloadPage { if (err) { console.log('预加载本地资源png 出现错误! err=' + err) } else { - console.log('预加载本地资源png成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + console.log('预加载本地资源png成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源png') .onClick(() => { - this.imageKnifeOption5 = { - loadSrc: $r('app.media.pngSample'), + this.imageKnifeOption5 = { + loadSrc: $r('app.media.pngSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - } + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), - }) + } + + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) @@ -511,32 +511,32 @@ struct TestPreloadPage { Button('预加载网络资源png') .onClick(() => { - let request = new RequestOption(); - request.load('https://img-blog.csdnimg.cn/20191215043500229.png') - .setImageViewSize({ width: 300, height: 300 }) - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源bmp 出现错误! err=' + err) - } else { - console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load('https://img-blog.csdnimg.cn/20191215043500229.png') + .setImageViewSize({ width: 300, height: 300 }) + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源bmp 出现错误! err=' + err) + } else { + console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源png') .onClick(() => { - this.imageKnifeOption5 = { - loadSrc: 'https://img-blog.csdnimg.cn/20191215043500229.png', + this.imageKnifeOption5 = { + loadSrc: 'https://img-blog.csdnimg.cn/20191215043500229.png', - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) } @@ -557,27 +557,27 @@ struct TestPreloadPage { if (err) { console.log('预加载本地资源jpg 出现错误! err=' + err) } else { - console.log('预加载本地资源jpg成功! imageKnifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + console.log('预加载本地资源jpg成功! imageKnifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('本地资源jpg') .onClick(() => { - this.imageKnifeOption6 = { - loadSrc: $r('app.media.jpgSample'), + this.imageKnifeOption6 = { + loadSrc: $r('app.media.jpgSample'), - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - } + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), - }) + } + + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) @@ -589,32 +589,32 @@ struct TestPreloadPage { Button('预加载网络资源jpg') .onClick(() => { - let request = new RequestOption(); - request.load('https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB') - .setImageViewSize({ width: 300, height: 300 }) - .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err) { - console.log('预加载网络资源jpg 出现错误! err=' + err) - } else { - console.log('预加载网络资源jpg成功! imageknifedata=' + JSON.stringify(data)) - } - return false; - }}) - ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); - }) + let request = new RequestOption(); + request.load('https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB') + .setImageViewSize({ width: 300, height: 300 }) + .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { + if (err) { + console.log('预加载网络资源jpg 出现错误! err=' + err) + } else { + console.log('预加载网络资源jpg成功! imageknifedata=' + JSON.stringify(data)) + } + return false; + }}) + ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) Button('网络资源jpg') .onClick(() => { - this.imageKnifeOption6 = { - loadSrc: 'https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB', + this.imageKnifeOption6 = { + loadSrc: 'https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB', - placeholderSrc: $r('app.media.icon_loading'), - errorholderSrc: $r('app.media.icon_failed'), - - }; - }) + placeholderSrc: $r('app.media.icon_loading'), + errorholderSrc: $r('app.media.icon_failed'), + + }; + }) .margin({ left: 15 }) .backgroundColor(Color.Grey) } diff --git a/entry/src/main/resources/base/profile/main_pages.json b/entry/src/main/resources/base/profile/main_pages.json index dd19f58..12657f6 100644 --- a/entry/src/main/resources/base/profile/main_pages.json +++ b/entry/src/main/resources/base/profile/main_pages.json @@ -12,6 +12,7 @@ "pages/showErrorholderTestCasePage", "pages/transformPixelMapPage", "pages/testPreloadPage", + "pages/testDiskPreLoadPage", "pages/testImageKnifeOptionChangedPage", "pages/testImageKnifeOptionChangedPage2", "pages/testImageKnifeOptionChangedPage3", diff --git a/library/oh-package.json5 b/library/oh-package.json5 index a97e8a7..1b8fc01 100644 --- a/library/oh-package.json5 +++ b/library/oh-package.json5 @@ -14,7 +14,7 @@ "main": "index.ets", "repository": "https://gitee.com/openharmony-tpc/ImageKnife", "type": "module", - "version": "2.1.2-rc.11", + "version": "2.1.2-rc.12", "dependencies": { "pako": "^2.1.0", "@ohos/gpu_transform": "^1.0.0" diff --git a/library/src/main/ets/components/imageknife/ImageKnife.ets b/library/src/main/ets/components/imageknife/ImageKnife.ets index 145daae..30eb5be 100644 --- a/library/src/main/ets/components/imageknife/ImageKnife.ets +++ b/library/src/main/ets/components/imageknife/ImageKnife.ets @@ -541,7 +541,7 @@ export class ImageKnife { displayProgress: displayProgress, uuid: request.uuid, dontAnimateFlag: request.dontAnimateFlag, - priority:request.priority, + priority: request.priority, generateCacheKey: request.generateCacheKey, generateResourceKey: request.generateResourceKey, generateDataKey: request.generateDataKey, @@ -552,7 +552,7 @@ export class ImageKnife { gpuEnabled: request.gpuEnabled, signature: request.signature, isCacheable: request.isCacheable, - diskMemoryCachePath:this.diskMemoryCache.getPath() + diskMemoryCachePath: this.diskMemoryCache.getPath() } return taskParams; } @@ -591,10 +591,10 @@ export class ImageKnife { retryholderSrc: request.retryholderSrc, }); //使用taskpool多线程执行资源下载 - let task:ESObject = new taskpool.Task(taskExecute, taskParams, loadSrcJson) + let task: ESObject = new taskpool.Task(taskExecute, taskParams, loadSrcJson) task.setTransferList([]) - emitter.on(Constants.PROGRESS_EMITTER as ESObject, (data:ESObject) => { + emitter.on(Constants.PROGRESS_EMITTER as ESObject, (data: ESObject) => { if (request.progressFunc && data?.data?.value) { let percent = data.data.value as number; request.progressFunc.asyncSuccess(percent); @@ -731,8 +731,34 @@ export class ImageKnife { } } } + + prefetchToDiskCache(url: string): Promise { + return new Promise((resolve, reject) => { + let key = this.engineKeyImpl.generateOriginalDiskCacheKey(url, undefined); + let cachedPath = this.getDiskMemoryCache().getFileToPath(key); + if (cachedPath == null || cachedPath == "" || cachedPath == undefined) { + let request = new RequestOption(); + request.load(url) + .addListener({ callback: (err: BusinessError | string, data: ImageKnifeData) => { + if (err) { + reject(err) + } else { + let cachedPath = this.getDiskMemoryCache().getFileToPath(key); + resolve(cachedPath); + } + return false; + } + }) + this.call(request); + } else { + resolve(cachedPath); + } + + }) + } } + /** * 加载资源子线程包含流程:网络请求资源->下载资源到本地->解码成ixelMap | GIFFrame[]->缓存到内存和磁盘 * @param taskParams:任务参数,JSON字符串类型 diff --git a/oh-package.json5 b/oh-package.json5 index a40b30b..9e9498e 100644 --- a/oh-package.json5 +++ b/oh-package.json5 @@ -6,6 +6,6 @@ "name": "imageknife", "description": "example description", "repository": {}, - "version": "2.1.2-rc.11", + "version": "2.1.2-rc.12", "dependencies": {} }