android 获取相册列表的实现(三)

该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,,在该界面内可以实现所选图片的上传等功能。 该项目最大特色: 1、获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取。 2、使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的。同时,通过引用第三方jar可以有效解决OOM异常问题。 本篇博文接上面两篇博文 android 获取相册列表的实现(一) android 获取相册列表的实现(二) 继续讲述相册内图片列表界面的实现,首先给出相册列表界面Acitivity类代码:

{private GridView gridView;private PhotoUpImageBucket photoUpImageBucket;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.album_item);init();//初始化setListener();//设置监听器}(){gridView = (GridView) findViewById(R.id.album_item_gridv);Intent intent = getIntent();photoUpImageBucket = (PhotoUpImageBucket) intent.getSerializableExtra(“imagelist”);AlbumItemAdapter adapter = new AlbumItemAdapter(photoUpImageBucket.getImageList(), AlbumItemActivity.this);gridView.setAdapter(adapter);}(){gridView.setOnItemClickListener(new OnItemClickListener() {(AdapterView<?> parent, View view,int position, long id) {Toast.makeText(AlbumItemActivity.this, “选中了”+position, Toast.LENGTH_SHORT).show();}});}() {super.onDestroy();}}

下面给出适配器代码:

{private List<PhotoUpImageItem> list;private LayoutInflater layoutInflater;private ImageLoader imageLoader;//图片加载器private DisplayImageOptions options;public AlbumItemAdapter(List<PhotoUpImageItem> list,Context context){this.list = list;layoutInflater = LayoutInflater.from(context);imageLoader = ImageLoader.getInstance();// 使用DisplayImageOption.Builder()创建DisplayImageOptionsoptions = new DisplayImageOptions.Builder().showStubImage(R.drawable.default_loading_pic)// 设置图片下载期间显示的图片.showImageForEmptyUri(R.drawable.default_loading_pic) // 设置图片Uri为空或是错误的时候显示的图片.showImageOnFail(R.drawable.default_loading_pic)// 设置图片加载或解码过程中发生错误显示的图片.cacheInMemory(true)// 设置下载的图片是否缓存在内存中.cacheOnDisc(true)// 设置下载的图片是否缓存在SD卡中// .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片.bitmapConfig(Config.ARGB_8888).imageScaleType(ImageScaleType.IN_SAMPLE_INT).build();// 创建配置过的DisplayImageOption对象}() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {Holder holder;if (convertView == null) {convertView = layoutInflater.inflate(R.layout.album_item_image_view, parent, false);holder = new Holder();holder.imageView = (ImageView) convertView.findViewById(R.id.image_item);convertView.setTag(holder);}else {holder = (Holder) convertView.getTag();}imageLoader.displayImage(“file://”+list.get(position).getImagePath(), holder.imageView, options);return convertView;}class Holder{ImageView imageView;}}

图片列表界面的适配器比较简单,获取数据之后进行加载即可。这里面用到了相册对象类PhotoUpImageBucket,该类代码如下:

/** * 一个目录下的相册对象 */{public int count = 0;public String bucketName;public List<PhotoUpImageItem> imageList;() {return count;}(int count) {this.count = count;}public String getBucketName() {return bucketName;}(String bucketName) {this.bucketName = bucketName;}public List<PhotoUpImageItem> getImageList() {return imageList;}(List<PhotoUpImageItem> imageList) {this.imageList = imageList;}}

同时代码中也是用到了图片对象类PhotoUpImageItem,该类代码如下:

{//图片IDprivate String imageId;//原图路径private String imagePath;isSelected = false;public String getImageId() {return imageId;}(String imageId) {this.imageId = imageId;}public String getImagePath() {return imagePath;}(String imagePath) {this.imagePath = imagePath;}() {return isSelected;}(boolean isSelected) {this.isSelected = isSelected;}}

把每个相册和每个图片创建为对象方便维护和更加简便的开发,如果后期增加什么功能,在对象的基础上开发会很大程度上带来方便。

你有没有这样的感觉,坐在一列火车上,

android 获取相册列表的实现(三)

相关文章:

你感兴趣的文章:

标签云: