位置: 编程技术 - 正文
推荐整理分享使用Unversial-image-loader来异步加载网络图片和本地图片(二)完结篇(使用灭火器时要对准火焰的什么部位喷射),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:使用二氧化碳灭火器时人应该站在什么位置,使用的拼音,使用的拼音,使用权资产,使用灭火器时要对准火焰的什么部位喷射,使用的拼音,使用筷子就餐会不会传染乙肝病毒,使用时间,内容如对您有帮助,希望把文章链接给更多的朋友!
上一篇使用了Universal-Image-Loader这个控件加载了网络图片,当然,你觉得这个控件只能加载网络图片的话,那你就太小瞧它了,它同样也能加载本地图片!这次就来使用它加载本地图库的照片。
这次我整合了上次加载网络图片的功能很这次的加载本地图片的功能,放在了一起。
先上效果图(加载网络图片的效果在上一篇博客):
Universal-Image-Loader用来加载图片的方式都是通过传递URl来加载的,这是项目里给出的URl的形式:
" // from Web
" // from SD card
" // from SD card (video thumbnail) " // from content provider " // from content provider (video thumbnail) " // from assets
" R.drawable.img // from drawables (non-9patch images)
依然给出代码:
//得到本地图片的URis
map = getImageUrl();// 配置图片加载及显示选项(还有一些其他的配置,查阅doc文档吧)DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.loading)// 在ImageView加载过程中显示图片.showImageForEmptyUri(R.drawable.loading)// image连接地址为空时.showImageOnFail(R.drawable.loading)// image加载失败.cacheOnDisc(true)// 加载图片时会在磁盘中加载缓存.cacheInMemory(true)// 加载图片时会在内存中加载缓存.build();// 主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(getApplicationContext()).memoryCache(new UsingFreqLimitedMemoryCache( * * )).defaultDisplayImageOptions(options).build();ImageLoader.getInstance().init(configuration);LocalWaterFallAdapter adapter = new LocalWaterFallAdapter(map,getApplicationContext());localList.setAdapter(adapter);}
//得到图片的URlpublic HashMap<Integer, Model> getImageUrl() {HashMap<Integer, Model> datas = new HashMap<Integer, Model>();Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,new String[] { MediaStore.Images.Media.DATA,MediaStore.Images.Media._ID }, null, null, null);for (int i = 0; i < cursor.getCount(); i) {cursor.moveToPosition(i);int dataIndextColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA);String fileName = cursor.getString(dataIndextColumn);try {File file = new File(fileName);if (!file.exists()) {continue;}} catch (Exception e) {// TODO: handle exception}Model model = new Model("file:/" cursor.getString(dataIndextColumn).toString());datas.put(i, model);}cursor.close();return datas;}
//Model这个类用来加载uri
public class Model { String url; public Model(String url) {this.url = url; } }
适配器代码:
private Context context;private HashMap<Integer, Model> map;private Drawable drawable;private ImageLoader imageLoader;private DisplayImageOptions options;public LocalWaterFallAdapter(HashMap<Integer, Model> map, Context context) {this.context = context;this.map = map;drawable = context.getResources().getDrawable(R.drawable.loading);imageLoader = imageLoader.getInstance();imageLoader.init(ImageLoaderConfiguration.createDefault(context));options = new DisplayImageOptions.Builder().showStubImage(R.drawable.loading).showImageForEmptyUri(R.drawable.loading).showImageOnFail(R.drawable.loading).cacheInMemory(true).bitmapConfig(Bitmap.Config.RGB_).build();}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn map != null ? map.size() : 0;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubfinal ViewHolder viewHolder;if (convertView == null) {convertView = LayoutInflater.from(context).inflate(R.layout.image_item, null);viewHolder = new ViewHolder();viewHolder.imageView = (ImageView) convertView.findViewById(R.id.image);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}imageLoader.displayImage(map.get(position).url, viewHolder.imageView,options);return convertView;}class ViewHolder {ImageView imageView;}
这样就能使用Unversial-Image-Loader来加载本地图片了,也是相当方便,学习就到这了,当然还远远不够,真正厉害的大神都是去直接解析源代码的算法之类的。我暂时还看不懂,只能慢慢学吧!总之,Unversial-Image-Loader是一款非常好的用来异步加载图片的工具!
Error when loading the SDK:发现了以元素 d:skin 开头的无效内容 更新了AndroidSDK之后,打开Eclipse就弹出错误提示,每次打开虚拟机的时候也报这样的错误:[--::-AndroidSDK]ErrorwhenloadingtheSDK:Error:ErrorparsingD:adt-bu
OpenCV+Android开发配置 最近想把OpenCV的程序放在手机上玩一玩,就找了Android和OpenCV的配置和开发的资料,发现很多都不靠谱,整了很久,最后找到一两篇不错的博文,我这里
应用程序使用同一个TAG的Log方法 1.简介调用Log记录日志时,如果每个文件定义自己的TAG,且作为Log的第一个入参,那么在adblogcat的使用,要写上多个TAG:d。为了简化,可以让整个应用使
友情链接: 武汉网站建设