当前位置: 首页 > 工具软件 > Android-GL > 使用案例 >

【Android】Glide

戎桐
2023-12-01

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 );

 类似资料: