首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Glide二次封装库的使用

Glide二次封装库的使用

作者头像
先知先觉
发布2019-01-21 14:37:59
1.7K0
发布2019-01-21 14:37:59
举报

上一篇文章介绍了如何基于Glide进行二次封装。 基于Glide的二次封装

更多代码可以查询本人GitHub:欢迎阅读,star点起来。 Glide二次封装库源码

本篇文章将详细讲述如何使用。

#初始化 在gradle中添加如下配置

compile 'com.libin.imageloader:ImageLoader:1.0.3'

在Application中:

	ImageLoader.init(getApplicationContext());

为了防止oom,加入如下代码,清理内存:

	@Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);

        ImageLoader.trimMemory(level);
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();

        ImageLoader.clearAllMemoryCaches();
    }

#混淆 在proguard-rules中添加如下

-dontwarn okio.**

#API详解 ##一.入口方法

该方法返回SingleConfig.ConfigBuilder

ImageLoader.with(this)

二.出口方法

asBitmap(BitmapListener bitmapListener) // 使用bitmap不显示到imageview into(View targetView) //加载到imageview中去

##三.加载图片的分辨率—override 在不添加此方法的时候,系统会默认加载所需大小的图片,此方法用于改变加载图片的分辨率,并不是改变图片大小。

override(int oWidth, int oHeight)

##四.缩略图—thumbnail 在没有完全加载出来图片时候先显示规定大小的缩略图,如果直接加载出来图片,则不现实缩略图。缩略图不能与圆角矩形同时使用。

thumbnail(float thumbnail)

##五.加载Gif

ImageLoader.with(this)
                .url("https://isparta.github.io/compare-webp/image/gif_webp/gif/1.gif")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test4);
这里写图片描述
这里写图片描述

注: 这里在使用的时候要添加.diskCacheStrategy(DiskCacheStrategy.SOURCE) 不然会出现加载网络gif速度慢或者不显示的情况

##六.加载JPEG

ImageLoader.with(this)
                .url("https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=2796659031,1466769776&fm=80&w=179&h=119&img.JPEG")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test5);
这里写图片描述
这里写图片描述

##七.加载png

ImageLoader.with(this)           .url("http://s1.dwstatic.com/group1/M00/86/4A/81beb00a44bc52b4fdd46285de8f8f00.png")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test3);
这里写图片描述
这里写图片描述

##八.加载jpg

 ImageLoader.with(this)
                .url("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490944508&di=671845045c66356487c1a539c4ed0717&imgtype=jpg&er=1&src=http%3A%2F%2Fattach.bbs.letv.com%2Fforum%2F201606%2F27%2F185306g84m4gsxztvzxjt5.jpg")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test2);
这里写图片描述
这里写图片描述

##九.加载webP

 ImageLoader.with(this)
                .url("https://p.upyun.com/docs/cloud/demo.jpg!/format/webp")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test6);
这里写图片描述
这里写图片描述

注:目前仅支持静态webp,暂不支持动态webp 了解更多webp相关知识可以参考下面这篇文章: WebP原理和Android支持现状介绍

##十.加载六种源图片 ###1.加载网络图片(url)

 ImageLoader.with(this)
                .url("https://p.upyun.com/docs/cloud/demo.jpg!/format/webp")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test6);

###2.加载资源图片(res)

ImageLoader.with(this)
                .res(R.drawable.jpeg_test)
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test8);

###3. 加载ContentProvider资源(content)

content(“content://media/external/images/media/139469”)

Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
        long aLong = 0;
        if (cursor != null && cursor.moveToFirst()) {
            aLong = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        }
        
ImageLoader.with(this)
                
.content("content://media/external/images/media/"+aLong)
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test10);

###4.加载SD卡资源(file)----支持文件路径和文件

.file(“file://”+Environment.getExternalStorageDirectory().getPath()+"/图片名称.图片格式") .file(new File(getFilesDir(),图片名称.图片格式))

ImageLoader.with(this)
                .file("file://"+ Environment.getExternalStorageDirectory().getPath()+"/SHARE_IMG2.PNG")
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test11);

###5.加载raw资源文件(raw)

.raw(“android.resource://包名/raw/”+R.raw.raw_1)

ImageLoader.with(this)
                .raw(RAW_PATH_S+getPackageName()+RAW_PATH_E+R.raw.jpeg_test)
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test14);

###6.加载asserts资源文件(asserts)

asserts(“file:///android_asset/图片名称.图片格式”)

ImageLoader.with(this)
                .asserts(ASSERTS_PATH+IMG_NAME_C)
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test13);

##十一.占位图—placeHolder 在没有加载出来之前显示的图片,

ImageLoader.with(this).placeHolder(R.mipmap.ic_launcher).into(View)

##十二.请求优先级 — priority 加载图片的请求优先级

.priority(PriorityMode.PRIORITY_LOW) //低 .priority(PriorityMode.PRIORITY_NORMAL) //正常 .priority(PriorityMode.PRIORITY_HIGH) // 高 .priority(PriorityMode.PRIORITY__IMMEDIATE ) // 立即

ImageLoader.with(this).priority(int priority).into(View)

##十三.拉伸模式—scale

.scale(ScaleMode.CENTER_CROP) // CENTER_CROP等比例缩放图片,直到图片的狂高都大于等于ImageView的宽度,然后截取中间的显示 ; .scale(ScaleMode.FIT_CENTER) // FIT_CENTER 等比例缩放图片,宽或者是高等于ImageView的宽或者是高 默认:FIT_CENTER

##十四.错误图—error 加载出错时候的显示的图片

ImageLoader.with(this).error(R.mipmap.ic_launcher).into(View)

##十五.磁盘缓存—diskCacheStrategy

ImageLoader.with(this).diskCacheStrategy(DiskCacheStrategy.RESULT).into(View)

DiskCacheStrategy.RESULT // 缓存transformate后的数据 DiskCacheStrategy.SOURCE // 缓存原始数据 DiskCacheStrategy.ALL // 缓存以上两种 DiskCacheStrategy.NONE // 不缓存

缓存之后在data/data/包名/cache下可以看到如下文件:

这里写图片描述
这里写图片描述

##十六.动画效果 ---- animate()

ViewPropertyAnimation.Animator animationObject = new ViewPropertyAnimation.Animator() {
            @Override
            public void animate(View view) {
                view.setAlpha( 0f );

                ObjectAnimator fadeAnim = ObjectAnimator.ofFloat( view, "alpha", 0f, 1f );
                fadeAnim.setDuration( 2500 );
                fadeAnim.start();
            }
        };


 ImageLoader.with(this).url(url)..animate(animationObject).into(View);

.animate(Animation animation) .animate(ViewPropertyAnimation.Animator animator) .animate(int animationId)

这里写图片描述
这里写图片描述

##十七.加载多边形----圆/正方形/圆角

.asSquare() 正方形

ImageLoader.with(this)..asSquare().into(View);
列表内容
列表内容

.rectRoundCorner(int rectRoundRadius) 圆角

ImageLoader.with(this).rectRoundCorner(50).into(View);
这里写图片描述
这里写图片描述

.asCircle() 圆形

ImageLoader.with(this)..asCircle().into(View);
这里写图片描述
这里写图片描述

##十八.滤镜效果 ###高斯模糊—blur

blur(int blurRadius)

 ImageLoader.with(this).url(url).blur(20).into(View);
这里写图片描述
这里写图片描述

###混色—colorFilter

colorFilter(int filteColor)

ImageLoader.with(this).colorFilter(R.color.colorAccent).into(View);
这里写图片描述
这里写图片描述

###亮度—brightnessFilter level = (0~1)

brightnessFilter(float level)

ImageLoader.with(this).brightnessFilter(20).into(View);

这里写图片描述
这里写图片描述

###黑白—grayscaleFilter

grayscaleFilter()

ImageLoader.with(this).grayscaleFilter().into(View);
这里写图片描述
这里写图片描述

###漩涡—.swirlFilter

.swirlFilter()

ImageLoader.with(this).swirlFilter().into(View);
这里写图片描述
这里写图片描述

###油画—.toonFilter

.toonFilter()

ImageLoader.with(this).toonFilter().into(View);
这里写图片描述
这里写图片描述

###墨画—sepiaFilter

.sepiaFilter()

ImageLoader.with(this).sepiaFilter().into(View);
这里写图片描述
这里写图片描述

###锐化—contrastFilter constrasrLevel = (0~1)

.contrastFilter(float constrasrLevel)

ImageLoader.with(this).contrastFilter(0.4f).into(View);
这里写图片描述
这里写图片描述

###胶片—invertFilter

.invertFilter()

ImageLoader.with(this).invertFilter().into(View);
这里写图片描述
这里写图片描述

###马赛克—pixelationFilter pixelationLevel = (0~100)

.pixelationFilter(float pixelationLevel)

ImageLoader.with(this)..pixelationFilter(0.4f).into(View);
这里写图片描述
这里写图片描述

###素描—.sketchFilter

…sketchFilter()

ImageLoader.with(this)..sketchFilter().into(View);

这里写图片描述
这里写图片描述

###映晕—vignetteFilter

.vignetteFilter()

ImageLoader.with(this).vignetteFilter().into(View);
这里写图片描述
这里写图片描述

##十九.https是否忽略校验—ignoreCertificateVerify 默认不忽略

ImageLoader.with(this).ignoreCertificateVerify(true).into(View);

##二十.自定义View----加载本地多边形图片 想要了解更多多边形图片相关知识,可以参考本人之前的博客: Android自定义View【实战教程】4⃣️----BitmapShader详解及圆形、圆角、多边形实现 ###参数解读 ####三种类型----type type:circle(圆形)/round(圆角)/multi(多边形) ####多边形角的个数----angleCount (integer) ####开始绘制的角度----currentAngle (integer) ####圆角的度数----borderRadius (dimension)

<com.ecarx.image.imageutil.MultiView
            android:layout_width="300dp"
            android:layout_height="300dp"
            android:padding="30dp"
            lb:angleCount="5"
            lb:type="multi"
            android:src="@drawable/b000"
            />
这里写图片描述
这里写图片描述
<com.ecarx.image.imageutil.MultiView
            android:layout_width="200dp"
            android:layout_height="200dp"
            lb:borderRadius="10dp"
            lb:type="round"
            android:src="@drawable/b000"
            />
这里写图片描述
这里写图片描述
<com.ecarx.image.imageutil.MultiView
            android:layout_margin="30dp"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            lb:type="circle"
            android:src="@drawable/b000"
            />
这里写图片描述
这里写图片描述

更多代码可以查询本人GitHub:欢迎阅读,star点起来。 Glide二次封装库源码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年05月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二.出口方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档