這個可以實現ImageView異步加載圖片,內存緩存,文件緩存,imageview顯示圖片時增加淡入淡出動畫。
解決了:
1. listview加載oom問題
2. listview加載時卡頓的現象
3. listview加載時item中圖片重復錯位等情況
可以配置:
1. 設置加載圖片的最大尺寸
2. 設置默認圖片的顯示
3. 設置圖片位圖模式
4. 設置內存緩存的最大值。
5. 文件緩存保存的目錄
這個框架基本的代碼是很久以前不知道哪裡弄的,零零碎碎的,現在已經優化了很多,所以現在上傳到github上共享。
講講使用方式吧:
首先使用前下載源碼或者jar包(見github:https://github.com/wangjiegulu/ImageLoaderSample)
然後進行圖片加載器(ImageLoader)的配置和初始化,推薦的方法如下:
新建MyApplication類,繼承Application,在onCreate中增加如下代碼:
復制代碼
1 /**
2 * Created with IntelliJ IDEA.
3 * Author: wangjie email:
[email protected]
4 * Date: 14-2-27
5 * Time: 上午11:25
6 */
7 public class MyApplication extends Application{
8 @Override
9 public void onCreate() {
10 super.onCreate();
11 ImageLoader.init(getApplicationContext(),
12 new CacheConfig()
13 .setDefRequiredSize(600) // 設置默認的加載圖片尺寸(表示寬高任一不超過該值,默認是70px)
14 .setDefaultResId(R.drawable.ic_launcher) // 設置顯示的默認圖片(默認是0,即空白圖片)
15 .setBitmapConfig(Bitmap.Config.ARGB_8888) // 設置圖片位圖模式(默認是Bitmap.CacheConfig.ARGB_8888)
16 .setMemoryCachelimit(Runtime.getRuntime().maxMemory() / 3) // 設置圖片內存緩存大小(默認是Runtime.getRuntime().maxMemory() / 4)
17 // .setFileCachePath(Environment.getExternalStorageDirectory().toString() + "/mycache") // 設置文件緩存保存目錄
18 );
19
20 }
21
22
23 ……
24 }
復制代碼
然後再AndroidManifest.xml中添加:
<application
......
android:name="MyApplication">
......
</application>
到此,配置已經全部完成:
接下來,使用ImageLoader來加載圖片:
復制代碼
1 holder.progress.setText("0%");
2 holder.progress.setVisibility(View.VISIBLE);
3 final ViewHolder vhr = holder;
4 ImageLoader.getInstances().displayImage(list.get(position), holder.image, new ImageLoader.OnImageLoaderListener() {
5 @Override
6 public void onProgressImageLoader(ImageView imageView, int currentSize, int totalSize) {
7 vhr.progress.setText(currentSize * 100 / totalSize + "%");
8 }
9
10 @Override
11 public void onFinishedImageLoader(ImageView imageView, Bitmap bitmap) {
12 vhr.progress.setVisibility(View.GONE);
13 }
14 });
15 或者:
16 ImageLoader.getInstances().displayImage(url, imageIv);
17 或者
18 ImageLoader.getInstances().displayImage(url, imageIv, 100);