Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Glide二次封装库的使用

Glide二次封装库的使用

作者头像
先知先觉
发布于 2019-01-21 06:37:59
发布于 2019-01-21 06:37:59
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
compile 'com.libin.imageloader:ImageLoader:1.0.3'

在Application中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	ImageLoader.init(getApplicationContext());

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	@Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);

        ImageLoader.trimMemory(level);
    }

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

        ImageLoader.clearAllMemoryCaches();
    }

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-dontwarn okio.**

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

该方法返回SingleConfig.ConfigBuilder

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this)

二.出口方法

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

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

override(int oWidth, int oHeight)

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

thumbnail(float thumbnail)

##五.加载Gif

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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”)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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(),图片名称.图片格式))

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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/图片名称.图片格式”)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this)
                .asserts(ASSERTS_PATH+IMG_NAME_C)
                .placeHolder(R.mipmap.ic_launcher)
                .scale(ScaleMode.FIT_CENTER)
                .into(iv_test13);

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 ) // 立即

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 加载出错时候的显示的图片

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).error(R.mipmap.ic_launcher).into(View)

##十五.磁盘缓存—diskCacheStrategy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).diskCacheStrategy(DiskCacheStrategy.RESULT).into(View)

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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() 正方形

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this)..asSquare().into(View);

.rectRoundCorner(int rectRoundRadius) 圆角

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).rectRoundCorner(50).into(View);

.asCircle() 圆形

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this)..asCircle().into(View);

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

blur(int blurRadius)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ImageLoader.with(this).url(url).blur(20).into(View);

###混色—colorFilter

colorFilter(int filteColor)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).colorFilter(R.color.colorAccent).into(View);

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

brightnessFilter(float level)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).brightnessFilter(20).into(View);

###黑白—grayscaleFilter

grayscaleFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).grayscaleFilter().into(View);

###漩涡—.swirlFilter

.swirlFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).swirlFilter().into(View);

###油画—.toonFilter

.toonFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).toonFilter().into(View);

###墨画—sepiaFilter

.sepiaFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).sepiaFilter().into(View);

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

.contrastFilter(float constrasrLevel)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).contrastFilter(0.4f).into(View);

###胶片—invertFilter

.invertFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).invertFilter().into(View);

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

.pixelationFilter(float pixelationLevel)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this)..pixelationFilter(0.4f).into(View);

###素描—.sketchFilter

…sketchFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this)..sketchFilter().into(View);

###映晕—vignetteFilter

.vignetteFilter()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).vignetteFilter().into(View);

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageLoader.with(this).ignoreCertificateVerify(true).into(View);

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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"
            />
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<com.ecarx.image.imageutil.MultiView
            android:layout_width="200dp"
            android:layout_height="200dp"
            lb:borderRadius="10dp"
            lb:type="round"
            android:src="@drawable/b000"
            />
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
基于Glide的二次封装
更多代码可以查询本人GitHub:欢迎阅读,star点起来。 Glide二次封装库源码
先知先觉
2019/01/21
1.2K0
[Glide4源码解析系列] — 1.Glide初始化
[Glide4源码解析系列]--1.Glide初始化 [Glide4源码解析系列]--2.Glide数据模型转换与数据抓取 [Glide4源码解析系列]--3.Glide数据解码与转码
开发的猫
2020/04/01
1K0
[Glide4源码解析系列] — 1.Glide初始化
Glide 4.0.0 RC0 使用详解
demo下载地址: http://download.csdn.net/detail/github_33304260/9863653
先知先觉
2019/01/21
1.1K0
Android图片处理--缩放
把ImageView或者PhotoView的对象名直接添加到display中就OK 了。
cMusketeer
2018/06/17
2.9K0
学习|Android中两个PhotoView对比及Glide的扩展使用
PhotoView是在Android一个比较常用的图片预览的开源库,在搜索中也发现了两个不同的PhotoView,分别是com.github.chrisbanes:PhotoView:2.3.0和com.bm.photoview:library:1.4.1,从使用对比的效果来说,个人更倾向于com.bm.photoview,这个除了有上面的那个的功能外,还可以加入图像的旋转。
Vaccae
2020/01/15
3.7K0
学习|Android中两个PhotoView对比及Glide的扩展使用
Anroid笔记:Android图片加载框架Glide用法
Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取。
程思扬
2022/01/11
8530
借鉴Glide思想二次封装Fresco背景二次封装使用示例Github 地址
Fresco 图片库很强大,我们项目中就是使用的 Fresco,但有一点就是,不怎么好使用,略麻烦。不同项目中,多多少少都需要对 Fresco 进行一层封装才能在 ui 里快速使用。
请叫我大苏
2018/11/07
8000
Android 基于 glide 4.0 封装图片加载库
很多时候只要简单的调用一行代码实现图片的高性能加载(对于 glide 这个框架不熟悉的同学,可以看一下我这篇文章 glide 一个强大的图片加载框架 ),使用起来是不是特别的简单?可能你会有疑问,都已经封装得这么好了, 有必要再封装一层么?那你错了,哪怕他已经很完美了,我都会进行相应的封装。
developerHaoz
2018/08/20
1.1K0
常用控件之Button详解
小伙伴们肯定都有在玩儿一些游戏,比如和平精英,在界面上展示的名字,其实就是Android中咱们上一篇介绍到的TextView控件。而今天,我们再给大家带来一个非常好玩儿的控件,这个控件可以结合咱们之前的讲到的内容做很多有趣的事情~
下码看花
2019/09/02
1.5K0
常用控件之Button详解
android-recyclerview嵌套recyclerview
实现思路就是在一个recyclerview的adapter中 在初始化一个recyclerview 的adapter
tea9
2022/07/16
1.9K0
android-recyclerview嵌套recyclerview
Android图片加载库:最全面解析Glide用法
前言 上文已经对当今Android主流的图片加载库进行了全面介绍 & 对比 如果你还没阅读,我建议你先移步这里进行查看 今天我们来学习一下其中一个Android主流的图片加载库的使用 - Gl
Carson.Ho
2019/02/22
3.6K0
全面解析Notification
Notification在Android中使用的频率可以说是非常高的,本篇博客,我将围绕着Notification的各方面进行解析,使大家对Notification有更好的认识。
老马的编程之旅
2022/06/22
2.9K0
全面解析Notification
{Android}一行代码起飞,Glide加载gif优化实践
最近项目中有使用到gif动画,加上本身已经引入了Glide 3.7.0(支持gif)库,所以便用Glide来加载了;但在使用过程中还是遇到了不少困难, 在此记录下,希望可以给遇到类似问题的你一些思考和建议。
Android技术干货分享
2019/03/27
10.8K0
{Android}一行代码起飞,Glide加载gif优化实践
5-AVI--Fragment简单封装
零、前言 [1].每次写Fragment要加载布局,为布局设置内容,挺麻烦的,搞个基类简单封装一下吧 [2].一般封装基类使用模板方法设计模式,基类中做一些常用的不变东西,需要拐点弯的逻辑就弄个抽
张风捷特烈
2018/09/29
6620
5-AVI--Fragment简单封装
相关推荐
基于Glide的二次封装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验