本文实例为大家分享了AndroID ImageLoader框架的使用方法,供大家参考,具体内容如下
1.准备工作
1)导入universal-image-loader-1.9.5.jar到项目中
2)创建MyApplication继承Application,在oncreate()中初始化ImageLoader
public class MyApplication extends Application { @OverrIDe public voID onCreate() { super.onCreate(); initimageLoader(this); } // 初始化imageloader private voID initimageLoader(Context context) { // 初始化参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPriority(Thread.norM_PRIORITY - 2) // 线程优先级 .denyCacheImageMultipleSizesInMemory() // 当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片 .discCachefilenameGenerator(new Md5filenameGenerator()) // 将保存的时候的URI名称用MD5 .tasksProcessingOrder(QueueProcessingType.liFO) // 设置图片下载和显示的工作队列排序 .writeDeBUGLogs() // 打印deBUG log .build(); // 全局初始化此配置 ImageLoader.getInstance().init(config); }}
2.ImageLoader_ListvIEw中使用
5)初始化displayImageOptions
6)获取ImageLoader实例
7)显示加载的图片
public class ImageloaderListvIEwAdapter extends BaseAdapter { private Context mContext; private final ImageLoader imageLoader; private displayImageOptions options = new displayImageOptions.Builder() .showStubImage(R.drawable.atguigu_logo) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.drawable.atguigu_logo) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.atguigu_logo) // 设置图片加载或解码过程中发生错误显示的图片 .cacheInMemory(true) // 设置下载的图片是否缓存在内存中 .cacheOndisk(true) // 设置下载的图片是否缓存在SD卡中 .displayer(new RoundedBitmapdisplayer(20)) // 设置成圆角图片 .build(); // 创建配置过得displayImageOption对象; public ImageloaderListvIEwAdapter(Context context) { mContext = context; // 初始化imageloader imageLoader = ImageLoader.getInstance(); } @OverrIDe public int getCount() { return Constants.IMAGES.length; } @OverrIDe public Object getItem(int position) { return Constants.IMAGES[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(mContext,R.layout.item_imageloader_ListvIEw,null); holder = new VIEwholder(convertVIEw); convertVIEw.setTag(holder); }else { holder = (VIEwholder) convertVIEw.getTag(); } holder.name.setText("item"+(position + 1)); imageLoader.displayImage(Constants.IMAGES[position],holder.iv,options); return convertVIEw; } class VIEwholder{ @Bind(R.ID.iv_imageloader_ListvIEw) ImageVIEw iv; @Bind(R.ID.tv_imageloader_name) TextVIEw name; public VIEwholder(VIEw vIEw) { ButterKnife.bind(this,vIEw); } }}
3.ImageLoader_在VIEwPager中使用
public class ImageloaderVIEwpagerAdapter extends PagerAdapter { private Context mContext; private final ImageLoader imageLoader; private displayImageOptions options = new displayImageOptions.Builder() .showImageForEmptyUri(R.drawable.atguigu_logo) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.drawable.atguigu_logo) // 设置图片加载或解码过程中发生错误显示的图片 .resetVIEwBeforeLoading(true) // 设置图片在下载前是否重置,复位 .cacheOndisc(true) // 设置下载的图片是否缓存在SD卡中 .imageScaleType(ImageScaleType.EXACTLY) // 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565) // 设置图片的解码类型 .displayer(new FadeInBitmapdisplayer(300)) // 设置图片渐变显示 .build(); ; public ImageloaderVIEwpagerAdapter(Context context) { mContext = context; // 初始化Imageloader imageLoader = ImageLoader.getInstance(); } @OverrIDe public Object instantiateItem(VIEwGroup container,int position) { // 添加布局文件 VIEw vIEw = VIEw.inflate(mContext,R.layout.item_imageloader_vIEwpager,null); // 获取控件对象 ImageVIEw iv = (ImageVIEw) vIEw.findVIEwByID(R.ID.iv_imageloader_vIEwpager); // 显示图片 imageLoader.displayImage(Constants.IMAGES[position],iv,options); ((VIEwPager) container).addVIEw(vIEw,0); return vIEw; } @OverrIDe public voID destroyItem(VIEwGroup container,int position,Object object) { ((VIEwPager) container).removeVIEw((VIEw) object); } @OverrIDe public int getCount() { return Constants.IMAGES.length; } @OverrIDe public boolean isVIEwFromObject(VIEw vIEw,Object object) { return vIEw.equals(object); }}
3.ImageLoader 内存溢出解决办法
1)减少线程池中线程的个数,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推荐配置1-5。
2)在displayImageOptions选项中配置bitmapConfig为Bitmap.Config.RGB_565,因为默认是ARGB_8888, 使用RGB_565会比使用ARGB_8888少消耗2倍的内存。
3)在ImageLoaderConfiguration中配置图片的内存缓存为memoryCache(new WeakMemoryCache()) 或者不使用内存缓存。
4)在displayImageOptions选项中设置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android ImageLoader第三方框架解析全部内容,希望文章能够帮你解决Android ImageLoader第三方框架解析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)