您的位置:首页 > 其它

ImageLoader

2016-05-25 20:12 330 查看
package com.example.image_loader;

import java.io.File;

import com.nostra13.universalimageloader.cache.disc.DiskCache;

import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;

import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;

import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;

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.core.decode.BaseImageDecoder;

import com.nostra13.universalimageloader.core.download.BaseImageDownloader;

import com.nostra13.universalimageloader.core.download.ImageDownloader;

import com.nostra13.universalimageloader.utils.StorageUtils;

import android.app.Application;

public class MyApplication extends Application {

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

//注:1.记得在AndroidManifest.xml中添加android:name="com.example.image_loader.MyApplication"

File cacheDir = StorageUtils.getOwnCacheDirectory(this, "imageloader/Cache");

ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)

.memoryCacheExtraOptions(480, 800) // max width, max height,即保存的每个缓存文件的最大长宽

.threadPoolSize(3) //线程池内加载的数量

.threadPriority(Thread.NORM_PRIORITY - 2)

.denyCacheImageMultipleSizesInMemory()

.diskCacheFileNameGenerator(new Md5FileNameGenerator()) //将保存的时候的URI名称用MD5 加密

.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现

.memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值

.diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值

.tasksProcessingOrder(QueueProcessingType.LIFO)

// 由原先的discCache -> diskCache

//.diskCache(new UnlimitedDiscCache(cacheDir))//自定义缓存路径

.imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间

.writeDebugLogs() // Remove for release app

.build();

//全局初始化此配置

ImageLoader.getInstance().init(configuration);

}

}

--------------------------------------------------------------------------------------

package com.example.image_loader;

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;

import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;

import android.os.Bundle;

import android.os.Handler;

import android.app.Activity;

import android.graphics.Bitmap;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.ListView;

import android.widget.Toast;

public class MainActivity extends Activity {

String[] path = new String[] {

"http://pic13.nipic.com/20110415/1369025_121513630398_2.jpg",

"http://dealer0.autoimg.cn/dl/10982/newsimg/130364690780019046.jpg",

"http://img3.imgtn.bdimg.com/it/u=1681882397,3535453166&fm=11&gp=0.jpg" };

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ListView lv = (ListView) findViewById(R.id.listView1);

lv.setAdapter(new myadapter());

}

class myadapter extends BaseAdapter {

@Override

public int getCount() {

// TODO Auto-generated method stub

return path.length;

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return null;

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

Viewholder vo;

if (convertView == null) {

vo = new Viewholder();

convertView = LayoutInflater.from(MainActivity.this).inflate(

R.layout.lv, null);

vo.ima = (ImageView) convertView.findViewById(R.id.imageView1);

convertView.setTag(vo);

} else {

vo = (Viewholder) convertView.getTag();

}

// 首先要得到ImageLoader的实例(使用的单例模式)

ImageLoader imageLoader1 = ImageLoader.getInstance();

// 使用DisplayImageOptions.Builder()创建

DisplayImageOptions options1 = new DisplayImageOptions.Builder()

.showImageOnLoading(R.drawable.q) // 设置图片下载期间显示的图片

.showImageForEmptyUri(R.drawable.w) // 设置图片Uri为空或是错误的时候显示的图片

.showImageOnFail(R.drawable.e) // 设置图片加载或解码过程中发生错误显示的图片

.cacheInMemory(false) // 设置下载的图片是否缓存在内存中

.cacheOnDisk(false) // 设置下载的图片是否缓存在SD卡中

// .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片

.build(); // 构建完成

imageLoader1.displayImage(path[position], vo.ima, options1);

return convertView;

}

}

class Viewholder {

ImageView ima;

}

}

-------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: