1.在app/build.gradle里面添加如下依赖(https://github.com/nostra13/Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader):
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5‘
2.添加权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3.布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context="www.itcast.com.testuil.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="show" android:text="展示图片" /> <ImageView android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" /> </LinearLayout>
4.主要代码:
public class MainActivity extends AppCompatActivity { //要展示的网络图片url public static final String URL_IMG2 = "http://img2.3lian.com/2014/f7/5/d/22.jpg"; //展示图片的控件 private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { iv = (ImageView) findViewById(R.id.iv); // ImageLoaderConfiguration 简单初始化 ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this); // 初始化配置 ImageLoader.getInstance().init(configuration); } //展示图片的方法 public void show(View view) { //显示图片 动态纹理技术 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) .displayer(new FadeInBitmapDisplayer(3000)) .build(); ImageLoader.getInstance().displayImage(URL_IMG2, iv, options); } }
// 1. 显示圆形图片.使用该效果,必须在布局中显式指定显示图片控件的宽高
//展示图片的方法 public void show(View view) { // 1. 显示圆形图片.使用该效果,必须显式指定图片的宽高 DisplayImageOptions options = new DisplayImageOptions.Builder() .displayer(new CircleBitmapDisplayer()) .build(); ImageLoader.getInstance().displayImage(URL_IMG2, iv, options); }
//2.显示圆角图片.使用该效果,必须在布局中显式指定显示图片控件的宽高
//展示图片的方法 public void show(View view) { // 2. 显示圆角图片.使用该效果,必须显式指定图片的宽高 DisplayImageOptions options = new DisplayImageOptions.Builder() .displayer(new RoundedBitmapDisplayer(90)) .build(); ImageLoader.getInstance().displayImage(URL_IMG2, iv, options); }
//3.显示圆角缩放图片.使用该效果,必须显式指定图片的宽高
public void show(View view) { //3. 显示圆角缩放图片.使用该效果,必须显式指定图片的宽高 DisplayImageOptions options = new DisplayImageOptions.Builder() .displayer(new RoundedVignetteBitmapDisplayer(30,60)) .build(); ImageLoader.getInstance().displayImage(URL_IMG2, iv, options);}
//4.显示渐显图片
public void show(View view) { //4. 显示渐显图片 DisplayImageOptions options = new DisplayImageOptions.Builder() .displayer(new FadeInBitmapDisplayer(3000)) .build(); ImageLoader.getInstance().displayImage(URL_IMG2, iv, options);}
注释:配置参数
// ImageLoaderConfiguration 详细配置 File cacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "imageloader/Cache"); // 自定义缓存文件夹 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(480, 800) // 指定缓存到内存时图片的大小,默认是屏幕尺寸的长宽 .diskCacheExtraOptions(480, 800, null) // 指定缓存到硬盘时图片的大小,并不建议使用 .taskExecutor(new Executor()) // 自定义一个线程来加载和显示图片 .taskExecutorForCachedImages(new Executor())// 自定义一个线程来缓存图片 .threadPoolSize(3) // default, 指定线程池大小 .threadPriority(Thread.NORM_PRIORITY - 2) // default ,指定线程优先级 .tasksProcessingOrder(QueueProcessingType.FIFO) // default , 指定加载显示图片的任务队列的类型 .denyCacheImageMultipleSizesInMemory() // 禁止在内存中缓存同一张图片的多个尺寸类型 .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) // 指定内存缓存的大小,默认值为1/8 应用的最大可用内存 .memoryCacheSize(2 * 1024 * 1024) .memoryCacheSizePercentage(13) // default .diskCache(new UnlimitedDiskCache(cacheDir)) // default , 指定硬盘缓存的地址 .diskCacheSize(50 * 1024 * 1024) // 指定硬盘缓存的大小 .diskCacheFileCount(100) // 指定硬盘缓存的文件个数 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default , 指定硬盘缓存时文件名的生成器 .imageDownloader(new BaseImageDownloader(context)) // default , 指定图片下载器 .imageDecoder(new BaseImageDecoder()) // default , 指定图片解码器 .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default , 指定图片显示的配置 .writeDebugLogs() // 是否显示Log .build();
DisplayImageOptions 参数详解: DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_stub) // 图片正在加载时显示的图片资源ID .showImageForEmptyUri(R.drawable.ic_empty) // URI为空时显示的图片资源ID .showImageOnFail(R.drawable.ic_error) // 图片加载失败时显示的图片资源ID .resetViewBeforeLoading(false) // default 图片在下载前是否重置,复位 .delayBeforeLoading(1000) // 图片开始加载前的延时.默认是0 .cacheInMemory(false) // default , 是否缓存在内存中, 默认不缓存 .cacheOnDisk(false) // default , 是否缓存在硬盘 , 默认不缓存 .preProcessor(new BitmapProcessor) // 设置图片缓存在内存前的图片处理器 .postProcessor(new BitmapProcessor) // 设置图片在缓存到内存以后 , 显示在界面之前的图片处理器 .extraForDownloader(...) // 为图片下载设置辅助参数 .considerExifParams(false) // default , 设置是否考虑JPEG图片的EXIF参数信息,默认不考虑 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default , 指定图片缩放的方式,ListView/GridView/Gallery推荐使用此默认值 .bitmapConfig(Bitmap.Config.ARGB_8888) // default , 指定图片的质量,默认是 ARGB_8888 .decodingOptions(...) // 指定图片的解码方式 .displayer(new SimpleBitmapDisplayer()) // default , 设置图片显示的方式,用于自定义 .handler(new Handler()) // default ,设置图片显示的方式和ImageLoadingListener的监听, 用于自定义 .build();
时间: 2024-10-29 19:10:39