对于以下的代码 直接粘贴就可以用 方便简洁//MainActivity里面的写法
package com.bwie.imageloaderdemo; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; public class MainActivity extends AppCompatActivity { private ImageView iv; String imageUrl = "https://img-my.csdn.net/uploads/201407/26/1406383213_4418.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); //使用图片框架要先得到它的实例 ImageLoader imageLoader = ImageLoader.getInstance(); //图片的显示配置,这个是图片显示的一些配置,也可以不配,底层有默认值 DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片 .resetViewBeforeLoading(false) // default 设置图片在加载前是否重置、复位 .delayBeforeLoading(1000) // 下载前的延迟时间 .cacheInMemory(false) // default 设置下载的图片是否缓存在内存中 .cacheOnDisk(false) // default 设置下载的图片是否缓存在SD卡中 .considerExifParams(false) // default .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.ARGB_8888) // default 设置图片的解码类型 .displayer(new RoundedBitmapDisplayer(20))//设置圆角 .build(); //把网络图片请求过来,并显示到控件上; imageLoader.displayImage(imageUrl, iv, options); } }
//Mapp里面的内容
package com.bwie.imageloaderdemo; import android.app.Application; import android.util.Log; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.utils.StorageUtils; import java.io.File; import static com.nostra13.universalimageloader.core.ImageLoader.TAG; /** * author:Created by WangZhiQiang on 2017-10-09. * 全局的上下文, app已启动运行的第一个上下文,也是全局的上下文 * 配置一些 全局的 工具, 框架,等等(代码统计, 联网框架) * 当整个程序退出, 这个上下文才消亡; * * 需要再清单文件中配置Application这个类--在资源文件Application标签下 android:name=".MApp" */ public class MApp extends Application { private String tag = "MApp"; @Override public void onCreate() { super.onCreate(); Log.e(tag, "执行了MApp的 onCreate: " ); //缓存文件的目录 File cacheFile = StorageUtils.getOwnCacheDirectory(this, "imageloader/image"); Log.e(TAG, "onCreate: "+ cacheFile.getAbsolutePath()); //初始化imageLoader框架 ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(this) .memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每个缓存文件的最大长宽 .threadPoolSize(5)//线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) .denyCacheImageMultipleSizesInMemory() .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .discCacheSize(50 * 1024 * 1024) .discCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .discCacheFileCount(100) //缓存的文件数量 .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) .writeDebugLogs() // Remove for release app .diskCache(new UnlimitedDiskCache(cacheFile))//自定义缓存目录 .build();//开始构建 // Initialize ImageLoader with configuration. ImageLoader.getInstance().init(config);//全局初始化此配置 } }
//MDiskCaceh里面的写法
package com.bwie.imageloaderdemo; import android.graphics.Bitmap; import com.nostra13.universalimageloader.cache.disc.DiskCache; import com.nostra13.universalimageloader.utils.IoUtils; import java.io.File; import java.io.IOException; import java.io.InputStream; /** * author:Created by WangZhiQiang on 2017-10-18. */ class MDiskCaceh implements DiskCache { @Override public File getDirectory() { return null; } @Override public File get(String s) { return null; } @Override public boolean save(String s, InputStream inputStream, IoUtils.CopyListener copyListener) throws IOException { return false; } @Override public boolean save(String s, Bitmap bitmap) throws IOException { return false; } @Override public boolean remove(String s) { return false; } @Override public void close() { } @Override public void clear() { } }//布局没什么 只有以下内容
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwie.imageloaderdemo.MainActivity"> <ImageView android:id="@+id/iv" android:layout_width="200dp" android:layout_height="200dp" /> </RelativeLayout>
//AndroidManifest里面也没有动
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bwie.imageloaderdemo"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:name=".MApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>