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

该项目实现的功能如下:
获取手机相册,点击每个相册之后进入该相册的图片列表界面,在图片列表界面可以实现图片多选,然后进入所选择的图片界面,在该界面内可以实现所选图片的上传等功能。
该项目最大特色:
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包实现,点击确定按钮开发者可以进行后续的开发工作。
至此整个项目讲述完毕。如果各位朋友有什么疑问或者发现文中有误,请不吝赐教!非常感谢!同时,由于本人水平有限,如果博文中有什么错误的地方,请多多包涵,欢迎批评指正!【握手】

源码下载

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。