Glide
Glide
- 添加依赖
1
2
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
- 加网络权限
1
<uses-permission android:name="android.permission.INTERNET"/>
与生命周期绑定,大大减少OOM的可能
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.example.myglide;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
import com.bumptech.glide.load.resource.bitmap.Rotate;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.module.AppGlideModule;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.transition.DrawableCrossFadeFactory;
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.iv);
RequestOptions requestOptions = new RequestOptions()
.placeholder(R.drawable.ic_baseline_cloud_download_24) // 正在加载时显示的图片
.error(R.drawable.ic_baseline_error_24) // 加载失败时显示的,默认为palceholder的图
.fallback(R.drawable.ic_baseline_adb_24) // 请求为null时显示的图,默认placeholder
.override(100, 100);
// 过渡效果结束后让placeholder消失
DrawableCrossFadeFactory fadeFactory =
new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();
Glide.with(this) // 与activity生命周期绑定
.load("https://img0.baidu.com/it/u=2151136234,3513236673&fm=26&fmt=auto&gp=0.jpg")
.apply(requestOptions)
.transition(DrawableTransitionOptions.withCrossFade(fadeFactory)) // 默认时Drawable,可以用.asBitmap()改变
// .transform(new CircleCrop()) // 圆角
// .transform(new RoundedCorners(20)) // 自定义弧度
// .transform(new GranularRoundedCorners(20, 30, 40, 50)) // 自定义每个角弧度
.transform(new Rotate(90)) // 旋转角度
.into(imageView);
// 配置到扩展中
GlideApp.with(this).load("").defaultImg().into(imageView);
}
}
- 添加扩展后:GlideApp.with(this).load(“”).defaultImg().into(imageView);
- MyGlideModule.java
1
2
3
4
5
6
7
8
package com.example.myglide;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
@GlideModule
public class MyGlideModule extends AppGlideModule {
}
- MyExtension.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example.myglide;
import com.bumptech.glide.annotation.GlideExtension;
import com.bumptech.glide.annotation.GlideOption;
import com.bumptech.glide.request.BaseRequestOptions;
@GlideExtension
public class MyAppExtension {
private MyAppExtension(){
}
@GlideOption
public static BaseRequestOptions<?> defaultImg(BaseRequestOptions<?> options){
return options
.placeholder(R.drawable.ic_baseline_cloud_download_24) // 正在加载时显示的图片
.error(R.drawable.ic_baseline_error_24) // 加载失败时显示的,默认为palceholder的图
.fallback(R.drawable.ic_baseline_adb_24); // 请求为null时显示的图,默认placeholder
}
}
本文由作者按照 CC BY 4.0 进行授权