Glide二次封装库的使用

来源:互联网 发布:js 方法重载 编辑:程序博客网 时间:2024/05/22 13:21

上一篇文章介绍了如何基于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二次封装库源码

9 0