转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18730223),请尊重他人的辛勤劳动成果,谢谢!

写这篇文章之前,先简单说几句,首先是先恭喜下自己获得了2013年的博客之星称号,很意外也很开心,自己是从2013年开始写博客,那时候也不知道怎么写,我从小就不喜欢写日记,作文什么的,所以刚开始都是贴代码,也没有人看,后面慢慢的,写的文章被推荐博客首页和CSDN首页(这里也要小小的感谢下小编MM),访问量逐渐的多了起来,有更多的人看我的文章,这也使自己有了继续写文章的动力,也希望我写的东西对大家有点帮助吧,在2014年我会继续在CSDN上面写博客,然后是感谢博客之星给我投票支持我的朋友们,谢谢你们支持我的每一票,最后就是2014春节马上就到了,提前祝福大家新年快乐,工作顺利,事事顺心!

回到主题,之前群里面有朋友问我,有没有关于本地图片选择的Demo,类似微信的效果,他说网上没有这方面的Demo,问我能不能写一篇关于这个效果的Demo,于是我研究了下微信的本地图片选择的Demo,自己仿照的写了下分享给大家,希望对以后有这样子需求的朋友有一点帮助吧,主要使用的是ContentProvider扫描手机中的图片,并用GridView将图片显示出来,关于GridView和ListView显示图片的问题,一直是一个很头疼的问题,因为我们手机的内存有限,手机给每个应用程序分配的内存也有限,所以图片多的情况下很容易伴随着OOM的发生,不过现在也有很多的开源的图片显示框架,大家有兴趣的可以去了解了解,今天我的这篇文章使用的是LruCache这个类(之前写了一篇使用LruCache加载网络图片的Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅)以及对图片进行相对应的裁剪,这样也可以尽量的避免OOM的发生,我们先看下微信的效果吧

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

接下来我们就来实现这些效果吧,首先我们新建一个项目,取名ImageScan

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性

 1 package com.example.imagescan;
 2 
 3 /**
 4  * GridView的每个item的数据对象
 5  * 
 6  * @author len
 7  *
 8  */
 9 public class ImageBean{
10     /**
11      * 文件夹的第一张图片路径
12      */
13     private String topImagePath;
14     /**
15      * 文件夹名
16      */
17     private String folderName; 
18     /**
19      * 文件夹中的图片数
20      */
21     private int imageCounts;
22     
23     public String getTopImagePath() {
24         return topImagePath;
25     }
26     public void setTopImagePath(String topImagePath) {
27         this.topImagePath = topImagePath;
28     }
29     public String getFolderName() {
30         return folderName;
31     }
32     public void setFolderName(String folderName) {
33         this.folderName = folderName;
34     }
35     public int getImageCounts() {
36         return imageCounts;
37     }
38     public void setImageCounts(int imageCounts) {
39         this.imageCounts = imageCounts;
40     }
41     
42 }
View Code

相关文章: