android+获取相册列表,android 获取相册列表的实现(二)

该项目实现的功能如下: 获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可

该项目实现的功能如下:

获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能。

该项目最大特色:

1、获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取。

2、使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的。同时,通过引用第三方jar可以有效解决OOM异常问题。

链接android 获取相册列表的实现(一)

继续上一篇博文的讲述,上一篇博文中通过一个异步加载类实现了获取本地相册和本地图片的数据,本篇博文主要讲述相册列表界面的实现,首先给出相册列表Activity类代码如下:

{

private GridView gridView;

List list;(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.albums_gridview);

init();//初始化

loadData();//加载数据

onItemClick();//设置相册点击事件

}

(){

gridView = (GridView) findViewById(R.id.album_gridv);

adapter = new AlbumsAdapter(AlbumsActivity.this);

gridView.setAdapter(adapter);

}

(){

photoUpAlbumHelper = PhotoUpAlbumHelper.getHelper();//创建异步线程实例

photoUpAlbumHelper.init(AlbumsActivity.this);//初始化实例

//回调接口,创建匿名内部对象,实现接口中的方法,获取到PhotoUpAlbumHelper的接口GetAlbumList所传递的数据

photoUpAlbumHelper.setGetAlbumList(new GetAlbumList() {

(List list) {

adapter.setArrayList(list);

adapter.notifyDataSetChanged();//更新视图

AlbumsActivity.this.list = list;

}

});

photoUpAlbumHelper.execute(false);//异步线程执行

}

(){

gridView.setOnItemClickListener(new OnItemClickListener() {

(AdapterView> parent, View view,

int position, long id) {

Intent intent = new Intent(AlbumsActivity.this,AlbumItemActivity.class);

intent.putExtra("imagelist", list.get(position));

startActivity(intent);

}

});

}

() {

super.onDestroy();

}

}

相册列表界面比较简单,不能懂,下面给出该界面的适配器代码,适配器代码采用重写非常常见的BaseAdapter类实现,也很简单,主要的特色在于采用第三方的jar包Android-Universal-Image-Loader实现相册封面的加载:

{

private List arrayList;

private LayoutInflater layoutInflater;

private ImageLoader imageLoader = ImageLoader.getInstance();//初始化获取实例

private DisplayImageOptions options;

(Context context){

layoutInflater = LayoutInflater.from(context);

arrayList = new ArrayList();//初始化集合

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)

.threadPriority(Thread.NORM_PRIORITY - 2)

.denyCacheImageMultipleSizesInMemory()

.discCacheFileNameGenerator(new Md5FileNameGenerator())

.tasksProcessingOrder(QueueProcessingType.LIFO)

.memoryCacheExtraOptions(96, 120)

.build();//初始化图片加载器的配置

// Initialize ImageLoader with configuration.

imageLoader.init(config);

// 使用DisplayImageOption.Builder()创建DisplayImageOptions

options = 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.RGB_565)

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)

.build(); // 创建配置过的DisplayImageOption对象

//上面的默认图片或者无法加载情况下的图片开发者可以自己设置,当然,可以设置不同的显示图片。我这里为了方便,采用同一幅图片作为默认图片

};

() {

return arrayList.size();

}

@Override

public Object getItem(int position) {

return arrayList.get(position);

}

(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

Holder holder;

if (convertView == null) {

holder = new Holder();

convertView = layoutInflater.inflate(R.layout.ablum_item, parent, false);

holder.image = (ImageView) convertView.findViewById(R.id.image);

holder.name = (TextView) convertView.findViewById(R.id.name);

holder.count = (TextView) convertView.findViewById(R.id.count);

convertView.setTag(holder);

}else {

holder = (Holder) convertView.getTag();

}

holder.count.setText(""+arrayList.get(position).getCount());

holder.name.setText(arrayList.get(position).getBucketName());

//图片加载器的使用代码,就这一句代码即可实现图片的加载。请注意这里的uri地址,因为我们现在实现的是获取本地图片,所以使用"file://"+图片的存储地址。如果要获取网络图片,这里的uri就是图片的网络地址。

imageLoader.displayImage("file://"+arrayList.get(position).getImageList().get(0).getImagePath(),

holder.image, options);

return convertView;

}

class Holder{

ImageView image;

TextView name;

TextView count;

}

(List arrayList) {

this.arrayList = arrayList;

}

}

整个相册列表的界面代码还是比较简单的。下一篇博文讲述android 获取相册列表的实现(三),

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值