压缩包
GlideDemo.zip
一、Generated API
1.添加Glide注解处理器的依赖:
dependencies{<br /> annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'<br /> }
2.在Application 模块中包含一个AppGlideModule的实现:
@GlideModule<br /> public final class MyAppGlideModule extends AppGlideModule{}
此时我们能够更简单的完成占位符等配置:
GlideApp.with(fragment)<br /> .load(myUrl)<br /> .placeholder(R.drawable.placeholder)<br /> .into(imageView);
二、整体代码
1.MyAppModule文件代码
package com.example.glidedemo;import androidx.appcompat.app.AppCompatActivity;import android.app.VoiceInteractor;import android.graphics.Bitmap;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;import com.bumptech.glide.load.resource.bitmap.CircleCrop;import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;import com.bumptech.glide.request.RequestOptions;import com.bumptech.glide.request.transition.DrawableCrossFadeFactory;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView iv = findViewById(R.id.iv);// RequestOptions requestOptions = new RequestOptions()// .placeholder(R.drawable.hold)// .error(R.drawable.error)// .fallback(R.drawable.empty)// .override(100, 100); // 常见错误:对占位符和透明图片交叉淡入可能都会显示,这时候就需要用到一个方法为factory DrawableCrossFadeFactory factory= new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build(); Glide.with(this).asBitmap() .load("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fitem%2F202006%2F03%2F20200603134848_dJURK.thumb.1000_0.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1627314693&t=ed1ffd3b9ea4133383ea827e1668999a")// .apply(requestOptions) .transition(BitmapTransitionOptions.withCrossFade(factory)) .transform(new CircleCrop()) .into(iv); GlideApp.with(this).load("").placeholder(R.drawable.empty).into(iv); }}
2.效果图:
三、GlideExtension与GlideOption
1.定义一个在频繁使用的选项集合。
@GlideExtension<br /> public class MyAppExtension{<br /> private MyAppExtension(){} // utility class<br /> @GlideOption<br /> public static BaseRequestOption<?> defaultImg(BaseRequestOptions<?> options){<br /> return options<br /> .placeholder(R.drawable.hold)<br /> .error(R.drawable.error)<br /> .fallback(R.drawable.fallback);<br /> }
使用对比:
GlideApp.with().load().placeholder(R.drawable.holder).error(R.drawable.error).fallback(R.drawable.fallback)<br /> GlideApp.with().load().defaultImg()
注:defaultImg除了transition的问题无法解决,其他都能直接解决
四、整体代码
1.MyAppExtension文件代码
package com.example.glidedemo;import com.bumptech.glide.annotation.GlideExtension;import com.bumptech.glide.annotation.GlideOption;import com.bumptech.glide.request.BaseRequestOptions;@GlideExtensionpublic class MyAppExtension { // utility class private MyAppExtension(){ } @GlideOption public static BaseRequestOptions<?> defaultImg(BaseRequestOptions<?> options){ return options .placeholder(R.drawable.hold) .error(R.drawable.error) .fallback(R.drawable.empty); }}
2.MainActivity文件代码
3.效果图:
