准备工作:
用到的工具类:
public class ImageLoaderUtil {
private static DisplayImageOptions options =new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.banner_01)
.showImageOnFail(R.drawable.banner_01)
.showImageForEmptyUri(R.drawable.banner_01)
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.resetViewBeforeLoading(true)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.displayer(new FadeInBitmapDisplayer(200))
.build();
private static DisplayImageOptions optionsBig = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.banner_02)
.showImageOnFail(R.drawable.banner_02)
.showImageForEmptyUri(R.drawable.banner_02)
.cacheInMemory(true).cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565).resetViewBeforeLoading(true)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.displayer(new FadeInBitmapDisplayer(200)).build();
private static DisplayImageOptions headerOptioins = new DisplayImageOptions.Builder()
//当图片加载的时候先显示的(暂无图片)
.showImageOnLoading(R.drawable.default_head)
//加载失败的时候显示
.showImageOnFail(R.drawable.default_head)
//没有图片的时候
.showImageForEmptyUri(R.drawable.default_head)
//缓存进内存
.cacheInMemory(true)
//缓存进SD卡
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
//在加载图片之前清空imageView
.resetViewBeforeLoading(true)
//缩放格式
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
//显示模式
.displayer(new FadeInBitmapDisplayer(200))
.build();
public static void display(String uri,ImageView imageView){
//imageView传给... options格式设置
ImageLoader.getInstance().displayImage(uri, imageView, options);
}
//大图片
public static void displayBigPhoto(String uri,ImageView imageView){
ImageLoader.getInstance().displayImage(uri, imageView, optionsBig);
}
//加载用户头像图片 小图片
public static void displayUserHeader( String uri,ImageView imageView){
ImageLoader.getInstance().displayImage(uri, imageView, headerOptioins);
}
}
自己定义一个application:(代码如下)
/*
在清单文件里的application下加上name属性 让其指向我们自己定义的Application
<application
android:name=".application.MyApplication"
*/
public class MyApplication extends Application {
@Override
//走完这个再去启动Activity
public void onCreate() {
super.onCreate();
//初始化ImagerLoader
ImageLoaderConfiguration config
= new ImageLoaderConfiguration.Builder(this)
.denyCacheImageMultipleSizesInMemory()
.threadPriority(Thread.NORM_PRIORITY - 2)
.memoryCacheSize((int) Runtime.getRuntime().maxMemory() / 8)
.diskCacheSize(50 * 1024 * 1024)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.discCache(new UnlimitedDiskCache(FileUitlity.getInstance(this, "imagCache").makeDir("imagCache")))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.imageDownloader(new BaseImageDownloader(this, 60 * 1000, 60 * 1000))
.build();
ImageLoader.getInstance().init(config);
}
}
ImageLoad的使用
public class ImageLoadActivity extends AppCompatActivity {
private ImageView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_load);
show= (ImageView) findViewById(R.id.show);
String url="http://img03.sogoucdn.com/app/a/100520024/4ae2d299ac7f183f54bd4b4ccc1f5c7e";
ImageLoaderUtil.displayBigPhoto(url, show);
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dell.jreduch07.ImageLoadActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/show"/>
</RelativeLayout>
一定要记得在清单文件里把application指向自己建的application
运行效果:
加载图片时
图片加载成功显示: