需要依赖的第三方包
版本为2.3.3的依赖
compile 'com.github.bumptech.glide:glide:4.7.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
下面是android 版本3.0以上
repositories { mavenCentral() google() } dependencies { implementation 'com.github.bumptech.glide:glide:4.7.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1' }
如果还不会就打开连接地址 https://github.com/bumptech/glide
public class MainActivity extends AppCompatActivity implements View.OnClickListener { protected ImageView iv; protected Button btn; protected String item; private String STR_TAG = "--->***"; private String TAG = this.getClass().getSimpleName(); protected String result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); initView(); } private void initView() { iv = (ImageView) findViewById(R.id.iv); btn = (Button) findViewById(R.id.btn); Button btn2 = (Button) findViewById(R.id.btn2); btn.setOnClickListener(MainActivity.this); btn2.setOnClickListener(MainActivity.this); } @Override public void onClick(View view) { if (view.getId() == R.id.btn) { show(); } else if (view.getId() == R.id.btn2) { show0(); } } private void show0() { String[] items = { "0加载图片来自File", "1加载图片来自资源id", "2加载图片来自uri", "3加载强制转化为gif", "4加载原图的缩略图", "5加载缩略图高级方式", "6加载设置不缓存", "7加载设置优先级", "8加载回调后的图片", "9加载回调后的图片设置尺寸", "10加载图片圆角转换", "11加载图片圆角转换2", }; new AlertDialog.Builder(this) .setTitle("glide操作2") .setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: selectedA0(); break; case 1: selectedA1(); break; case 2: selectedA2(); break; case 3: selectedA3(); break; case 4: selectedA4(); break; case 5: selectedA5(); break; case 6: selectedA6(); break; case 7: selectedA7(); break; case 8: selectedA8(); break; case 9: selectedA9(); break; case 10: selectedA10(); break; case 11: selectedA11(); break; case 12: break; } } }).create() .show(); } private void selectedA11() { //RoundedCorners, //CenterInside Glide.with(this) .load(UC.IMAGE_URL_A11) .apply( new RequestOptions() .override(300) .transform(new RoundedCorners(20)) ) .into(iv); } private void selectedA10() { Glide.with(this) .load(UC.IMAGE_URL_A10) .apply(new RequestOptions().transform(new GlideRoundTransform(this))) .into(iv); } private void selectedA9() { //强制Glide返回一个Bitmap SimpleTarget<Bitmap> target = new SimpleTarget<Bitmap>(300, 300) { @Override public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) { iv.setImageBitmap(resource); } }; Glide.with(this).asBitmap() .load(UC.IMAGE_URL_A9) .into(target ); } private void selectedA8() { //上面这段代码不要写成匿名内部类的机制,原因就是java的自动垃圾回收机制可能在图片还没有加载好的时候就已经把你的Target回收了 //注意.with()里面的参数,Glide的请求是和传进去的Context共存亡的,如果传一个Activity进去,当Activity GG过后,你的请求也就GG了,但是如果这样传:.with(context.getApplicationContext() ).当你的Activity GG过后,请求还是会继续,回调还是会继续。 //强制Glide返回一个Bitmap SimpleTarget<Bitmap> target = new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) { iv.setImageBitmap(resource); } }; Glide.with(this).asBitmap() .load(UC.IMAGE_URL_A8) .into(target ); } private void selectedA7() { Glide.with(this) .load(UC.IMAGE_URL_A7) .apply(new RequestOptions().priority(Priority.LOW)) .into(iv); } private void selectedA6() { Glide.with(this) .load(UC.IMAGE_URL_A6) .apply(new RequestOptions().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE)) .into(iv); } private void selectedA5() { //先加载第一张图片作为缩略图,在加载最终要显示的图片 //thumbnail中加载的是缩略图 Glide.with(this).load(UC.IMAGE_URL_9) .thumbnail(Glide.with(this).load(UC.IMAGE_URL_A5)).into(iv); } private void selectedA4() { //先加载为原图的十分之一,后再加载原图. Glide.with(this) .load(UC.IMAGE_URL_A4) .thumbnail(0.1f) .into(iv); } private void selectedA3() { Glide.with(this).asGif().load(UC.GIF_URL_0).into(iv); } private void selectedA2() { Glide.with(this) .load(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "d.jpg"))) .into(iv); } private void selectedA1() { Glide.with(this) .load(R.mipmap.ic_launcher_round) .into(iv); } private void selectedA0() { File file = new File(Environment.getExternalStorageDirectory(), "3.jpg"); Glide.with(this).load(file).into(iv); } private void show() { final String[] items = { "0加载图片一般用法", "1加载图片成功监听", "2加载图片失败", "3加载图片ID占位图", "4加载图片Drawable占位图", "5加载图片传入null", "6加载图片后修改宽高", "7加载图片后修改宽高等尺寸", "8加载图片centerCrop", "9加载图片fitCenter", "10加载图片centerInside", "11加载图片circleCrop", "12加载动态图的第一帧", "13加载动态图成功", "14加载本地视频缩略图", }; new AlertDialog.Builder(this) .setTitle("glide操作选项") .setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { item = items[which] + STR_TAG; switch (which) { case 0: selected0(); break; case 1: selected1(); break; case 2: selected2(); break; case 3: selected3(); break; case 4: selected4(); break; case 5: selected5(); break; case 6: selected6(); break; case 7: selected7(); break; case 8: selected8(); break; case 9: selected9(); break; case 10: selected10(); break; case 11: selected11(); break; case 12: selected12(); break; case 13: selected13(); break; case 14: selected14(); break; } } }).create() .show(); } private void selected14() { //缩略图的加载 String name = "v.f40.mp4"; Glide.with(this).load(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), name))) .into(iv); } private void selected13() { //GIF加载,URL指向的资源必须是gif,如果是普通图片则不显示。 //相反,如果指向正确但没有执行asGif方法,则只是作为普通图片展示 Glide.with(this).asGif().load(UC.GIF_URL_0).into(iv); } private void selected12() { //可理解为加载动态图的第一帧的Bitmap,比如Gif Glide.with(this).asBitmap(). load(UC.GIF_URL_0).into(iv); } private void selected11() { Glide.with(this) .load(UC.IMAGE_URL_11) .apply(new RequestOptions().circleCrop()) .into(iv); } private void selected10() { Glide.with(this) .load(UC.IMAGE_URL_10) .apply(new RequestOptions().centerInside()) .into(iv); } private void selected9() { Glide.with(this) .load(UC.IMAGE_URL_8) .apply(new RequestOptions().fitCenter()) .into(iv); } private void selected8() { RequestOptions options = new RequestOptions() .centerCrop(); Glide.with(this) .load(UC.IMAGE_URL_9) .apply(options) .into(iv); } private void selected7() { RequestOptions options = new RequestOptions().override(300).fitCenter(); Glide.with(this) .load(UC.IMAGE_URL_1) .apply(options) .into(iv); } private void selected6() { RequestOptions options = new RequestOptions().override(400, 400).fitCenter(); Glide.with(this).load(UC.IMAGE_URL_1) .apply(options) .into(iv); } private void selected5() { RequestOptions options = new RequestOptions() .fallback(R.mipmap.ic_launcher) .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(this) .load(null) .apply(options) .into(iv); } private void selected4() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.load); Drawable drawable = new BitmapDrawable(getResources(), bitmap); RequestOptions options = new RequestOptions().placeholder(drawable); Glide.with(this) .load(UC.IMAGE_URL_ERROR) .apply(options) .into(iv); } private void selected3() { RequestOptions options = new RequestOptions() .placeholder(R.mipmap.load) .error(R.mipmap.fail) .fallback(R.mipmap.ic_launcher) .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(this) .load(UC.IMAGE_URL_ERROR) .apply(options) .into(iv); } private void selected2() { Glide.with(this) .load(UC.IMAGE_URL_ERROR) .listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { DemonstrateUtil.showToastResult(MainActivity.this, "onLoadFailed失败"); return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { DemonstrateUtil.showToastResult(MainActivity.this, "onResourceReady成功"); return false; } }).into(iv); } private void selected1() { Glide.with(this) .load(UC.IMAGE_URL_1) .listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { DemonstrateUtil.showToastResult(MainActivity.this, "onLoadFailed加载失败!"); return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { DemonstrateUtil.showToastResult(MainActivity.this, "onResourceReady加载成功!"); return false; } }) .into(iv); } private void selected0() { //默认使用原图加载,内存缓存,磁盘缓存, Glide.with(this).load(UC.IMAGE_URL_0).into(iv); } }