该项目实现的功能如下:
获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能。
该项目最大特色:
1、获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取。
2、使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的。同时,通过引用第三方jar可以有效解决OOM异常问题。
本篇继续上面三篇博文的内容讲述,下面给出在选定的相册里面的图片之后,Activity跳转到所选择的图片的界面,就是把所选择的图片加载到界面当中显示,这样处理方便开发者对所选择的图片进行处理,如上传等可以根据自己的需求进一步开发。
下面给出Activity类的代码:
public class SelectedImagesActivity extends Activity implements OnClickListener{
private GridView gridView;
private TextView back,ok;
private ArrayList arrayList;//存放所选择的图片列表
private SelectedImagesAdapter adapter;//适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.selected_images_grid);
init();
setclickListener();
}
@SuppressWarnings("unchecked")
private void init(){
gridView = (GridView) findViewById(R.id.selected_images_gridv);
back = (TextView) findViewById(R.id.back);
ok = (TextView) findViewById(R.id.sure);
arrayList = (ArrayList) getIntent().getSerializableExtra("selectIma");
adapter = new SelectedImagesAdapter(SelectedImagesActivity.this,
arrayList);
gridView.setAdapter(adapter);
}
private void setclickListener(){
back.setOnClickListener(this);
ok.setOnClickListener(this);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.back:
finish();
break;
case R.id.sure:
Toast.makeText(SelectedImagesActivity.this,
"上传等操作,开发者可以自己处理", Toast.LENGTH_LONG).show();
break;
}
}
}
Activity类代码很简单,下面给出适配器代码:
public class SelectedImagesAdapter extends BaseAdapter {
private ArrayList arrayList;
private LayoutInflater layoutInflater;
private ImageLoader imageLoader;
private DisplayImageOptions options;
public SelectedImagesAdapter(Context context,ArrayList arrayList){
this.arrayList = arrayList;
layoutInflater = LayoutInflater.from(context);
imageLoader = ImageLoader.getInstance();
// 使用DisplayImageOption.Builder()创建DisplayImageOptions
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.album_default_loading_pic)
// 设置图片下载期间显示的图片
.showImageForEmptyUri(R.drawable.album_default_loading_pic)
// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.album_default_loading_pic)
// 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true)
// 设置下载的图片是否缓存在内存中
.cacheOnDisc(true)
// 设置下载的图片是否缓存在SD卡中
// .displayer(new RoundedBitmapDisplayer(20))
// 设置成圆角图片
.bitmapConfig(Config.ARGB_8888)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.build(); // 创建配置过的DisplayImageOption对象
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return arrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.selected_images_adapter_item, parent, false);
holder = new Holder();
holder.imageView = (ImageView) convertView.findViewById(R.id.selected_image_item);
convertView.setTag(holder);
}else {
holder = (Holder) convertView.getTag();
}
imageLoader.displayImage("file://"+arrayList.get(position).getImagePath(), holder.imageView,
options);
return convertView;
}
class Holder{
ImageView imageView;
}
}
适配器代码也很简单,直接使用图片加载器-第三方jar包实现,点击确定按钮开发者可以进行后续的开发工作。
至此整个项目讲述完毕。如果各位朋友有什么疑问或者发现文中有误,请不吝赐教!非常感谢!同时,由于本人水平有限,如果博文中有什么错误的地方,请多多包涵,欢迎批评指正!【握手】
源码下载