该项目实现的功能如下:
获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能。
该项目最大特色:
1、获取相册列表,目前网络上面介绍获取相册的项目很少,本文专门讲述相册的获取。
2、使用Android-Universal-Image-Loader集成框架-第三方jar包加载本地图片,熟悉这个jar的开发者肯定不陌生,该jar包十分强大,除了可以获取网络图片,本地图片也是可以的。同时,通过引用第三方jar可以有效解决OOM异常问题。
以上三篇博文的地址如下:
android 获取相册列表的实现及源码下载(一)
android 获取相册列表的实现及源码下载(二)
android 获取相册列表的实现及源码下载(三)
本篇继续上面三篇博文的内容讲述,下面给出在选定的相册里面的图片之后,Activity跳转到所选择的图片的界面,就是把所选择的图片加载到界面当中显示,这样处理方便开发者对所选择的图片进行处理,如上传等可以根据自己的需求进一步开发。
下面给出Activity类的代码:
public class SelectedImagesActivity extends Activity implements OnClickListener{ private GridView gridView; private TextView back,ok; private ArrayList<PhotoUpImageItem> 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<PhotoUpImageItem>) 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<PhotoUpImageItem> arrayList; private LayoutInflater layoutInflater; private ImageLoader imageLoader; private DisplayImageOptions options; public SelectedImagesAdapter(Context context,ArrayList<PhotoUpImageItem> 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包实现,点击确定按钮开发者可以进行后续的开发工作。
至此整个项目讲述完毕。如果各位朋友有什么疑问或者发现文中有误,请不吝赐教!非常感谢!同时,由于本人水平有限,如果博文中有什么错误的地方,请多多包涵,欢迎批评指正!【握手】
博文链接:
android 获取相册列表的实现及源码下载(一)
android 获取相册列表的实现及源码下载(二)
android 获取相册列表的实现及源码下载(三)
源码下载