美文网首页
Glide 封装--圆形 圆角 高斯模糊图片处理 加载状态以及进

Glide 封装--圆形 圆角 高斯模糊图片处理 加载状态以及进

作者: colin_default | 来源:发表于2020-08-05 09:33 被阅读0次

    介绍

    ImageLoader: 基于Glide + glide:okhttp + Glide图片变换库做的一个简单的封装.极大的简化使用Glide成本:

       GlideImageLoader.getInstance().displayWithDrable(context,url)?.intoTargetView(imageview)
    

    最基础的使用,这样便可实现普通图片以及GIF图的加载显示。

    功能

    • 支持图片圆角话圆型化处理。
    • 支持高色模糊处理。
    • 支持图片加载监听以及进度监听。
    • 支持动态修改placeholder以及error展位图。
    • 支持动态修改加载图片的宽高。
    • 支持动态修改加载图片的缓存策略。

    Demo

    device-2020-08-03-131928 (1).gif device-2020-08-03-131928.gif

    用法

    导入:

    Add it in your root build.gradle at the end of repositories:

    allprojects {
        repositories {
           ...
           maven { url 'https://jitpack.io' }
        }
    }
    

    Add the dependency

    dependencies {
       implementation 'com.github.colinlibrary:ImageLoader:1.0.11'
    }
    

    在Application的onCreate中初始化

    @Override
    public void onCreate() {
        super.onCreate();
        //当然你也可以不执行此操作,那么所有配置将启用默认配置执行
        GlideImageLoader.apply(DiskCacheMenu.RESOURCE)//设置缓存策略
                    //设置展位图资源(支持Drawable和Int类型的资源)
                    .apply(R.mipmap.placeholder,R.mipmap.error)
                    //设置淡入动画时间(默认500毫秒)
                    .apply(600)
                    //设置缓存大小默认5M
                    .apply(1025 * 1024 * 10L);
                    //设置缓存路径默认/data/user/0/***/cache/GlideDisk
                    //.apply("自定义缓存路径");
    }
    
    如果选用外部存储 请添加相应权限
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    以及动态申请相应权限
    

    使用:

    1.普通方式使用

    以下方式均 支持bitmap和drawable 想要加载GIF类型的资源选用drawable方式即可

       //context 支持 Activity,Fragment,View,Service类型
       GlideImageLoader.getInstance().displayWithDrawable(context,url)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayWithBitmap(context,url)?.intoTargetView(targetView)
    

    2.加载圆形图片

       //context 支持 Activity,Fragment,View,Service类型
       GlideImageLoader.getInstance().displayCircleWithDrawable(context,url)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayCircleWithBitmap(context,url)?.intoTargetView(targetView)
    

    3.加载圆角图片

       //context 支持 Activity,Fragment,View,Service类型
       GlideImageLoader.getInstance().displayRoundWithDrawable(context,url,cornerRadius)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayRoundWithDrawable(context,url,cornerRadius,cornerTypeMenu)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayRoundWithBitmap(context,url,cornerRadius)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayRoundWithBitmap(context,url,cornerRadius,cornerTypeMenu)?.intoTargetView(targetView)
       
       cornerTypeMenu一共有 
       ALL,
       TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT,
       TOP, BOTTOM, LEFT, RIGHT,
       OTHER_TOP_LEFT, OTHER_TOP_RIGHT, OTHER_BOTTOM_LEFT, OTHER_BOTTOM_RIGHT,
       DIAGONAL_FROM_TOP_LEFT, DIAGONAL_FROM_TOP_RIGHT
       种类型可以选择
    

    4.高斯模糊加圆角的方式加载

       //context 支持 Activity,Fragment,View,Service类型
       GlideImageLoader.getInstance().displayWithBlur(context,url,cornerRadius)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayWithBlurRound(context,url,blurRadius,cornerRadius)?.intoTargetView(targetView)
       GlideImageLoader.getInstance().displayWithBlurRound(context,url,blurRadius,cornerRadius,cornerTypeMenu)?.intoTargetView(targetView)
       
       
       同样的cornerTypeMenu一共有 
       ALL,
       TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT,
       TOP, BOTTOM, LEFT, RIGHT,
       OTHER_TOP_LEFT, OTHER_TOP_RIGHT, OTHER_BOTTOM_LEFT, OTHER_BOTTOM_RIGHT,
       DIAGONAL_FROM_TOP_LEFT, DIAGONAL_FROM_TOP_RIGHT
       种类型可以选择
    

    5.资源加载监听

       //context 支持 Activity,Fragment,View,Service类型
       //bitmap方式加载
       GlideImageLoader.getInstance().displayWithBitmap(context,url,object : ImageLoaderListener<Bitmap> {
                    override fun onRequestSuccess(resource: Bitmap?) {//成功回调
                        
                    }
    
                    override fun onRequestFailed() {//失败回调
                        
                    }
                })?.intoTargetView(targetView)
       
       //drawable方式加载
       GlideImageLoader.getInstance().displayWithDrawable(context,url,object : ImageLoaderListener<Drawable> {
                    override fun onRequestSuccess(resource: Drawable?) {//成功回调
                        
                    }
    
                    override fun onRequestFailed() {//失败回调
                        
                    }
                })?.intoTargetView(targetView)
                
       //drawable方式加载     
       GlideImageLoader.getInstance().displayWithDrawable(context,url,object : OnProgressListener<Drawable>{
                    override fun onProgress(isComplete: Boolean,percentage: Int,bytesRead: Long,totalBytes: Long) {//进度回调
                        
                    }
    
                    override fun onComplete(resource: Drawable?) {//成功回调
                        
                    }
                    override fun onFailed() {//失败回调
                        
                    }
                } )?.intoTargetView(targetView)
                
       //bitmap方式加载     
       GlideImageLoader.getInstance().displayWithBitmap(context,url,object : OnProgressListener<Bitmap>{
                    override fun onProgress(isComplete: Boolean,percentage: Int,bytesRead: Long,totalBytes: Long) {//进度回调
                        
                    }
    
                    override fun onComplete(resource: Bitmap?) {//成功回调
                        
                    }
                    override fun onFailed() {//失败回调
                        
                    }
                } )?.intoTargetView(targetView)
    
    * 以上方式均支持重置加载资源宽高(针对本次加载生效) 例如:
       GlideImageLoader.getInstance().displayWithDrawable(context,url)?.resetTargetSize(400,400)?.intoTargetView(targetView)
       
       这样就以400*400为目标view去加载资源
    
    * 自定义缓存策略(针对本次加载生效)例如:
       GlideImageLoader.getInstance().displayWithDrawable(context,url)?.resetDiskCacheStrategy(DiskCacheStrategy.DATA)?.intoTargetView(targetView)
    
    *重置占位图(针对本次加载生效)placeholder,error 均支持 drawable和int 两种类型 例如:
       GlideImageLoader.getInstance().displayWithDrawable(context,url)?.resetPlaceHolder(placeholder,error)?.intoTargetView(targetView)
    
    * 重置ScaleType (针对本次加载生效 请谨慎使用)
       GlideImageLoader.getInstance().displayWithDrawable(context,url)?.resetScaleType(ScaleTypeMenu.CenterCrop)?.intoTargetView(targetView)
       
       ScaleTypeMenu 共支持 
       Default,CenterCrop,CenterInside,FitCenter,CircleCrop
       种类型可选择
    
    * 重置CrossFade 过渡时长 (针对本次加载生效)
       //以毫秒为时间单位
       GlideImageLoader.getInstance().displayWithDrawable(context,url)?.resetCrossFadeTime(100)?.intoTargetView(targetView)
    

    6.获取URL资源

      
       //bitmap方式
       GlideImageLoader.getInstance().getUrlWithBitmap(context,url,object :OnProgressListener<Bitmap>{
                    override fun onProgress( isComplete: Boolean, percentage: Int,  bytesRead: Long, totalBytes: Long    ) {//进度回调
                        
                    }
    
                    override fun onComplete(resource: Bitmap?) {//成功回调
                   
                    }
                    override fun onFailed() {//失败回调
                        
                    }
                })
                
        //drawable方式
        GlideImageLoader.getInstance().getUrlWithDrawable(context,url,object :OnProgressListener<Drawable>{
                    override fun onProgress( isComplete: Boolean, percentage: Int,  bytesRead: Long, totalBytes: Long    ) {//进度回调
                        
                    }
    
                    override fun onComplete(resource: Drawable?) {//成功回调
                   
                    }
                    override fun onFailed() {//失败回调
                        
                    }
                })
                
       //bitmap方式
       GlideImageLoader.getInstance().getUrlWithBitmap(context,url,object : ImageLoaderListener<Bitmap> {
                    override fun onRequestSuccess(resource: Bitmap?) {//成功回调
                        
                    }
    
                    override fun onRequestFailed() {//失败回调
                        
                    }
                })
                
        //drawable方式
        GlideImageLoader.getInstance().getUrlWithDrawable(context,url,object : ImageLoaderListener<Drawable> {
                    override fun onRequestSuccess(resource: Drawable?) {//成功回调
                        
                    }
    
                    override fun onRequestFailed() {//失败回调
                        
                    }
                })
    

    7.缓存清理

       /**
         * 内存缓存清理(主线程)
         */
        override fun clearMemoryCache(context: Context?) {
            context?.let { GlideApp.get(it).clearMemory() }
        }
    
        /**
         * 磁盘缓存清理(子线程)
         */
        override fun clearFileCache(context: Context?) {
            Thread(Runnable { context?.let { GlideApp.get(it).clearDiskCache() } }).start()
        }
    

    缺点

    • 还有很多不足之处以后慢慢改进

    项目地址

    相关文章

      网友评论

          本文标题:Glide 封装--圆形 圆角 高斯模糊图片处理 加载状态以及进

          本文链接:https://www.haomeiwen.com/subject/gctbrktx.html