Android开发-开源框架Glide的使用,图片的加载

1 Glide简介:

Glide是一个图片加载框架,由Google员工开发的,在很多Google APP中大量采用,也是Google官方推荐的图片加载框架;

2 Glide的特点:

(1):生命周期的管理,既可以用于Activity,也可以用于Fragment。能够确保仅优先处理活跃的Fragment和Activity的请求,并有利于应用在必要时释放资源以避免在后台时被杀掉;
(2):支持gif图片的加载;
(3):三级缓存,内存缓存中还分为活动缓存和内存缓存;活动缓存指得是讲正在使用得图片用弱引用缓存,使用完成后到内存缓存;再到磁盘缓存;
(4):占用内存小;

3 Glide的使用

3.1 Glide网络图片加载举例

(1)库的依赖:

在build.gradle中,加入:

    implementation 'com.github.bumptech.glide:glide:4.3.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'

 (2)在Activity中的使用(java代码):

public class MainActivity extends AppCompatActivity {
    private Context mContext;
    private ImageView mImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mContext = this;
        initView();
        loadimage();
    }

    private void initView() {
        mImageView = findViewById(R.id.imageview1);
        
    }

    private void loadimage() {
//        String myUrl = "";
        String myUrl = "https://static.variflight.com/assets/image/aircorp/y8.png";
        Glide.with(mContext)
                .load(myUrl)
                .into(mImageView);


    }
}

说明:

Glide是一个异步网络图片请求库,不需要定义handler就可以进行ImageView的设置; 

Glide.into方法会将请求发送到RequestTracker 两个队列中 :requests和pendingRequests 请求过来之后,都是存入这两个队列;

(3)布局文件(xml文件):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <ImageView
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:id="@+id/imageview1"
        >
    </ImageView>

</LinearLayout>

 

 (4)不要忘记网络权限的申请:

在AndroidManifest.xml清单文件中,添加:

    <uses-permission android:name="android.permission.INTERNET" />

3.2 Glide的常用方法:

(1)with 传入的可以是当前上下文的对象,即Context。

(2)load 加载图片,图片可以是本地图片,应用资源的图片也可以是一张网络图片。

(3)placeholder 占位符是在请求正在进行时,显示的图片。

(4)error 当请求永久失败时,会显示设置图片。

(5)into 传入要展示图片的控件。

(6)transform 用来完成剪裁(切圆)或对位图应用过滤器,但它也可以用于转换GIF动画,甚至自定义的资源类型。

 

4 Glide的缓存机制

Glide缓存分为内存缓存和磁盘缓存,其中内存缓存是由弱引用+LruCache组成。

取的顺序是:弱引用、LruCache、磁盘
存的顺序是:磁盘、弱引用、LruCache

(1)弱引用:
弱引用是由这样一个HashMap维护,key是缓存的key,这个key由图片url、width、height等10来个参数组成;value是图片资源对象的弱引用形式。 

Map<Key, ResourceWeakReference> activeEngineResources = new HashMap<>();

 (2)LruCache:

LruCache是由一个LinkedHashMap维护,根据Lru算法来管理图片。大致的原理是利用LinkHashMap链表的特性,把最近使用过的文件插入到列表头部,没使用的图片放在尾部;然后当图片大小到达预先设置的一个阀值的时候 ,按算法删除列表尾部的部分数据。

Map<T, Y> cache = new LinkedHashMap<>(100, 0.75f, true);

 (3)磁盘缓存原理(DiskLruCache):

DiskCacheStrategy.DATA: 只缓存原始图片;
DiskCacheStrategy.RESOURCE:只缓存转换过后的图片;
DiskCacheStrategy.ALL:既缓存原始图片,也缓存转换过后的图片;对于远程图片,缓存 DATA和 RESOURCE;对于本地图片,只缓存 RESOURCE;
DiskCacheStrategy.NONE:不缓存任何内容;
DiskCacheStrategy.AUTOMATIC:默认策略,尝试对本地和远程图片使用最佳的策略。当下载网络图片时,使用DATA(原因很简单,对本地图片的处理可比网络要容易得多);对于本地图片,使用RESOURCE。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值