当前位置: 首页 > article >正文

鸿蒙开发 ImageKnife二次封装

开源地址:

ImageKnife: 专门为OpenHarmony打造的一款图像加载缓存库,致力于更高效、更轻便、更简单

封装自定义组件:
import { ImageKnifeComponent } from '@ohos/imageknife';

/**
 * 自定义图片加载
 */
@Component
export struct BaseImageView {
  @State src: string | PixelMap | Resource = ""
  @State placeSrc: string | PixelMap | Resource = ""
  defaultPlaceSrc: string | PixelMap | Resource = $r("app.media.ic_place_default")
  @State errorSrc: string | PixelMap | Resource = ""
  @State mWidth: Length = ""
  @State mHeight: Length = ""
  @State radius: BorderRadiuses | Length | LocalizedBorderRadiuses = ""
  @State fit: ImageFit = ImageFit.Fill

  aboutToAppear(): void {
    if (this.placeSrc) {
      this.defaultPlaceSrc = this.placeSrc
    }
  }

  build() {

    Column() {
      ImageKnifeComponent({
        imageKnifeOption: {
          loadSrc: this.src,
          placeholderSrc: this.defaultPlaceSrc,
          placeholderObjectFit: ImageFit.Fill,
          errorholderSrc: this.errorSrc,
          objectFit: this.fit,
          border: {
            radius: this.radius
          },
        }
      })
        .width(this.mWidth)
        .height(this.mHeight)
    }
  }
}
使用如下:
      BaseImageView({
        src: "https://img2.baidu.com/it/u=1237025922,2679733234&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1725382800&t=a1e37f873daad6046a78b63b2486c806",
        mWidth: 200,
        mHeight: 200,
      })
3.0.1bug:

placeholderSrc传入会报错,导致图片显示不了

处理占位图方法

1:等待开源作者修复

2:在BaseImageView里使用stack+image(显示占位图),监听ImageKnifeComponent的onLoadListener的onLoadSuccess方法,控制image+ImageKnifeComponent显示和隐藏


http://www.kler.cn/a/287824.html

相关文章:

  • 嵌入式课程day13-C语言指针
  • 若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理
  • CentOS 源码安装FFmpeg
  • 单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)
  • Servlet⽣生命周期超级细(笔记)
  • 查询DBA_FREE_SPACE缓慢问题
  • 数据结构(邓俊辉)学习笔记】串 07——KMP算法:分摊分析
  • 【python因果推断库2】使用 PyMC 模型进行差分-in-差分(Difference in Differences, DID)分析
  • 【rk3588】环境搭建及系统编译
  • css实现元素居中显示
  • 【Qt窗口】—— 浮动窗口
  • jarbas 靶机渗透(cms 渗透)
  • 2700+存储过程的超复杂Oracle,国产化怎么办?
  • unreal engine5.4.3动画重定向
  • android so的加载流程(Android 13~14)
  • js代码如何和服务端进行通信
  • 开发软件国内镜像下载总结
  • Docker 安装消息队列RabbitMQ
  • OpenHarmony技术开发:Launcher架构应用启动流程分析
  • Cyberchef实用功能之-json解析美化和转换
  • Java 面试题:HTTP缓存:强制缓存和协商缓存--xunznux
  • threejs中OrbitControls的用法
  • docker实战扩展三(dockerfile中run的详细用法)
  • 力扣1425.带限制的子序列和
  • 【初学人工智能原理】【13】LSTM网络:自然语言处理实践
  • 【系统架构设计师-2013年】综合知识-答案及详解