分享一下在实际项目中是如何使用(封装) glide 的吧

许久没看到有意思的文章了,今天分享下在项目里面 glide 的用法吧,整理分享出来。

能够简单一句话加载图片,dsl 方法添加各种配置,提高开发效率!

其实也不是什么高深东西,喜欢可以拿去用,仓库在文末:

简单使用:

先自己依赖 glide:

groovy 复制代码
implementation "com.github.bumptech.glide:glide:$glide_version"

然后可以使用了:

kotlin 复制代码
  imageView.loadImage(url)

如果加载的 resource 属于 Animatable,会自动调用 start()

配置加载参数:

kotlin 复制代码
  ImageView.loadImage(url){
    placeholder()      //占位,提供了 resId 和 drawable 两个方法
    error()            //错误占位,提供了 resId 和 drawable 两个方法
    decodeFormat()     //对应 Glide 的 format 配置
    centerCrop()       //显示模式,对应 centerCrop
    centerInside()     //显示模式,对应 centerInside
    fitCenter()        //显示模式,对应 fitCenter
    skipLocalCache()   //跳过缓存,下面几个都是
    skipNetCache()
    skipMemoryCache()
    skipOverride()     // 设置这个,就不会执行 override,即使设置了宽高
    circleCrop()       //圆形
    roundAngle()       //圆角
    maskColor()        //设置遮照颜色
    dontAnimate()      //不要动画
    blur()             //高斯模糊
    targetSize()       //设置宽高
    grayImage()        //彩色置灰
  }

如上,可以设置很多种基础配置。

加载回调

  1. 回调 drawable
kotlin 复制代码
imageView.loadImage(url){
    requestListener {
        onDrawableSuccess { drawable ->
           //...
        }
        onLoadFailed { 
            //...
        }
    }
}

也可以这样:

context.loadImage(url){
    requestListener {
        onDrawableSuccess { drawable ->
            imageView.setImageDrawable(drawable)
        }
    }
}
  1. 回调 bitmap,同理,不过需要调用 asBitmap
kotlin 复制代码
imageView.loadImage(url){
    asBitmap()
    requestListener {
        onBitmapSuccess { drawable ->
           //...
        }
    }
}

加载 gif

kotlin 复制代码
  imageView.loadImage(url){ asGif() }

asGif() 有个参数 getGifDrawable,默认 false,true 的话会在 onDrawableSuccess 里面得到 GifDrawable

加载 webp 动画

kotlin 复制代码
  imageView.loadImage(url){ webpGif() }

webp动画需要自己依赖解码库:

groovy 复制代码
  implementation "com.zlc.glide:webpdecoder:2.0.4.12.0"

加载 svga

加载svga需要自己依赖svga库:

groovy 复制代码
    implementation("com.github.yyued:SVGAPlayer-Android:2.6.1")

然后加载 svga 可选择用 Glide 去加载或者用 svga 自己的加载器加载,推荐用 glide 加载,需要自己依赖:

groovy 复制代码
 // 手Y SVGA管理
   implementation('com.github.YvesCheung:SVGAGlidePlugin:4.13.3') {
        exclude group: 'com.github.yyued', module: 'SVGAPlayer-Android'
   }

然后使用:

kotlin 复制代码
  imageView.loadImage(url){ asSvga() }

默认使用的是 glide 加载,不想的话 asSvga(false) 即可。

回调的话也是一样:

kotlin 复制代码
context.loadImage(url) {
    asSvga() 
    requestListener {
        onSvgaSuccess { entity, width, height, drawable ->
           //...
        }
    }
}

给 svga 添加 key:

kotlin 复制代码
context.loadImage(svgaTitle) {
    asSvga()
    addSvgaText {
        key = ""     //key
        text = ""    //文案 
        colorString = "#FFFFFF"  //颜色
        textSize = 20f.sp2px  //字体大小
        typeface = FontCache.getTypeface("XXX.ttf", context) //字体
    }
    addSvgaText {} //可添加多个
    //...
    addSvgaImage{
        key = ""     //key
        url=""     //图片url
    }
    addSvgaImage {} //可添加多个
    //...
    requestListener {
        onSvgaSuccess { entity, width, height, drawable ->
            svgaView?.setImageDrawable(drawable)
            svgaView?.startAnimation()
        }
    }
}

仓库地址:github.com/EspoirX/Gli...

相关推荐
ii_best4 小时前
按键精灵支持安卓14、15系统,兼容64位环境开发辅助工具
android
美狐美颜sdk5 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
恋猫de小郭9 小时前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
aqi0010 小时前
FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg
android·ffmpeg·音视频·流媒体
androidwork12 小时前
深入解析内存抖动:定位与修复实战(Kotlin版)
android·kotlin
梦天201512 小时前
android核心技术摘要
android
szhangbiao14 小时前
“开发板”类APP如果做屏幕适配
android
高林雨露15 小时前
RecyclerView中跳转到最后一条item并确保它在可视区域内显示
android
移动开发者1号17 小时前
ReLinker优化So库加载指南
android·kotlin
山野万里__17 小时前
C++与Java内存共享技术:跨平台与跨语言实现指南
android·java·c++·笔记