package bwei.com.day_0514_demo156; import android.app.Application; import android.content.Context; import android.graphics.Bitmap; import android.os.Environment; import android.os.Handler; import android.util.Log; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer; import com.nostra13.universalimageloader.core.download.BaseImageDownloader; import java.io.File; public class MyApp extends Application { private static final String TAG = "---MyApp"; private Context context; @Override public void onCreate() { super.onCreate(); context = this; Log.d(TAG, "应用创建---"); initImageLoader(); } private void initImageLoader() { //Configuration 配置 //Builder 建造者模式 //存到images String sdcardPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/images"; File file = new File(sdcardPath); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) //内存配置 .memoryCacheExtraOptions(480, 800) // default = device screen dimensions //磁盘缓存 // .diskCacheExtraOptions(480, 800, Bitmap.CompressFormat.JPEG, 75, null) .threadPoolSize(3) // 线程池里面线程的数量 .threadPriority(Thread.NORM_PRIORITY - 1) // 线程优先级 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .memoryCache(new LruMemoryCache(2 * 1024 * 1024))//内存缓存的大小 .memoryCacheSize(2 * 1024 * 1024) .diskCache(new UnlimitedDiskCache(file)) // 指sdcard的缓存路径 .diskCacheSize(50 * 1024 * 1024)//指sdcard的缓存大小 // .diskCacheFileCount(100)//指sdcard的缓存文件数量 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default .imageDownloader(new BaseImageDownloader(context)) // default // .imageDecoder(new BaseImageDecoder()) // 图片解码 .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() .build(); //记得配置到ImageLoader ImageLoader.getInstance().init(config); } //加载图片时候的配置 public static DisplayImageOptions getOptions() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // 加载过程中显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher) //当地址为空的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) // 加载错误时显示的图片 .resetViewBeforeLoading(true) // 加载前重置视图 .cacheInMemory(true) // 启动内存缓存 .cacheOnDisk(true) // 启动磁盘缓存 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default .bitmapConfig(Bitmap.Config.ARGB_8888) // default .displayer(new SimpleBitmapDisplayer()) // default .displayer(new FadeInBitmapDisplayer(100)) .handler(new Handler()) // default .build(); return options; } } //权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //下个页面 package com.daydayup.day07_imageloaderdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; /** * 1.熟悉ImageLoader --- 加载一张图片 * 2.列表里面的图片 ImageLoader ---- 图片错乱 * * 1.导包 * github * 2.配置 * 3.使用 * * ----三级缓存 * 1.多线程加载,加载效率高 * 2.可扩展性强。可以自定义配置 * 3.使用三级缓存。 * * 应用的启动流程。--- * */ public class MainActivity extends AppCompatActivity { private static String pic_url = "http://pic22.photophoto.cn/20120113/0036036848061774_b.jpg"; private static String pic1="http://img.zcool.cn/community/0381de85949053ca8012193a3339cc5.jpg"; private static String pic2 = "http://img.zcool.cn/community/038c0ee5744f9a500000025ae5acd2a.jpg"; private static String pic3 = "http://i1.hdslb.com/bfs/archive/763293ce06bf1e684ef0ea3da43ae5008d8564b8.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final List<String> images = new ArrayList<>(); images.add(pic_url); images.add(pic1); images.add(pic2); images.add(pic3); Button load_pic = findViewById(R.id.load_pic); final ImageView imageView=findViewById(R.id.pic); final ListView listView=findViewById(R.id.listview); load_pic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击开始使用Imageloader加载图片 // ImageLoader.getInstance().displayImage(pic_url,imageView); //listview加载图片 MyAdapter myAdapter = new MyAdapter(MainActivity.this, images); listView.setAdapter(myAdapter); } }); } } //适配器
package bwei.com.day_0514_demo156.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; import bwei.com.day_0514_demo156.MyApp; import bwei.com.day_0514_demo156.R; public class MyBase extends BaseAdapter { private Context context; private List<String> list; public MyBase(Context context, List<String> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView==null){ convertView=View.inflate(context, R.layout.mybase,null); holder = new ViewHolder(); holder.image=(ImageView) convertView.findViewById(R.id.my_image); convertView.setTag(holder); }else{ holder=(ViewHolder) convertView.getTag(); } String pic_url=list.get(position%list.size()); ImageLoader.getInstance().displayImage(pic_url,holder.image, MyApp.getOptions()); return convertView; } class ViewHolder{ ImageView image; } }