【Android】Glide

1,概述

谷歌官方支持的图像加载库,

导入依赖如下,

// https://mvnrepository.com/artifact/com.github.bumptech.glide/glide
implementation group: 'com.github.bumptech.glide', name: 'glide', version: '4.12.0'

2,实例

调用Glide.with方法传入context

public class GlideActivity extends AppCompatActivity {

    private static final String TAG = "GlideActivity";

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

        ImageView imageView = findViewById(R.id.glide_image);

        Observable.create((Observable.OnSubscribe<RequestBuilder<Drawable>>) subscriber -> {
            // io 线程请求网络
            RequestBuilder<Drawable> load = Glide.with(GlideActivity.this)
                    .load("https://hbimg.huabanimg.com/291e463711d1af5ee96bf19aa52aa3d8e1a8fe5b11a51d-af7b7F_fw1200")
                    //图片加载中,显示的图片
                    .placeholder(R.drawable.ic_launcher_foreground)
                    //图片加载失败的预留图
                    .error(R.drawable.ic_launcher_background);
            subscriber.onNext(load);
        }).observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(drawableRequestBuilder -> {
                    //主线程更新ui
                    drawableRequestBuilder.into(imageView);
                });
    }
}

3,其它方法

(1)缩略图

Glide 为缩略图提供了2种不同的加载方式,比较简单的方式是调用 thumbnail() 方法,参数是 float 类型,作为其倍数大小;

Glide.with( context )
    .load( url )
    .thumbnail( 0.2f )
    .into( imageView );

第二种加载方式通过request方式,

  // setup Glide request without the into() method
    DrawableRequestBuilder<String> thumbnailRequest = Glide.with( context ).load( url );
    // pass the request as a a parameter to the thumbnail request
    Glide.with( context )
        .load( url )
        .thumbnail( thumbnailRequest )
        .into( imageView );

(2)动画开关

动画效果可以让图片加载变得更加的平滑,crossFade() 方法强制开启 Glide 默认的图片淡出淡入动画,当前版本3.7.0是默认开启的。crossFade() 还有一个重载方法 crossFade(int duration)。可以控制动画的持续时间,单位ms。动画默认的持续时间是300ms。既然可以添加动画,那肯定就可以设置没有任何淡出淡入效果,调用 dontAnimate()

Glide.with(context)
    .load(url)
    .crossFade()//或者使用 dontAnimate() 关闭动画
    .placeholder(R.drawable.place_image)
    .error(R.drawable.error_image)
    .into(imageView);

(3)图片裁剪

使用 override(width,height) 方法,在图片显示到 ImageView 之前,重新改变图片大小。

Glide.with(context)
    .load(url)
    .override(width,height)//这里的单位是px
    .into(imageView);

(4)图片缓存

默认功能,通过以下代码强制关闭缓存,

Glide.with(context)
    .load(url)
    .skipMemoryCache(true)
    .diskCacheStrategy( DiskCacheStrategy.NONE )
    .into(imageView);

(5)图片优先级加载

//四种优先级
//Priority.LOW
//Priority.NORMAL
//Priority.HIGH
//Priority.IMMEDIAT

//设置 HIGH 优先级
Glide.with( context )
    .load( highPriorityImageUrl )
    .priority (Priority.HIGH )
    .into( imageView );
//设置 LOW 优先级
Glide.with( context )
    .load( lowPriorityImageUrl )
    .priority( Priority.LOW )
    .into( imageView );

(6)gif图显示

Glide.with( context )
    .load( gifUrl )
    .asGif()
    .error( R.drawable.error )
    .into( imageView );

(7)显示gif第一帧

Glide.with( context )
    .load( gifUrl )
    .asBitmap()
    .error( R.drawable.error )
    .into( imageView );

(8)本地视频显示

String filePath = "/storrage/emulated/0/Pictures/video.mp4";
Glide.with( context )
    .load( Uri.fromFile( new File( filePath ) ) )
    .into( imageView );

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值