Android 图片选择器

本人是Android菜鸟,所有博文都是自己的笔记,供自己工作中使用,以及大众参考,文中多少有借鉴引用的地方,如有不正,欢迎大家指出!

本文Android图片选择器是引用yancy的ImageSelector图片选择器开源框架:点击打开链接


下面贴出正文:

首先在gradle里边申明:

compile 'com.yancy.imageselector:imageselector:1.3.3'
MainActivity代码部分
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.yancy.imageselector.ImageConfig;
import com.yancy.imageselector.ImageSelector;
import com.yancy.imageselector.ImageSelectorActivity;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by hp on 2017/5/14.
 */

public class MainActivity extends AppCompatActivity {

    private Adapter adapter;

    private ArrayList<String> path = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button but = (Button) super.findViewById(R.id.but);
        RecyclerView recycler = (RecyclerView) super.findViewById(R.id.recycler);

        but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                ImageConfig imageConfig
                        = new ImageConfig.Builder(
                        // GlideLoader 可用自己用的缓存库
                        new GlideLoader())
                        // 如果在 4.4 以上,则修改状态栏颜色 (默认黑色)
                        .steepToolBarColor(getResources().getColor(R.color.blue))
                        // 标题的背景颜色 (默认黑色)
                        .titleBgColor(getResources().getColor(R.color.blue))
                        // 提交按钮字体的颜色  (默认白色)
                        .titleSubmitTextColor(getResources().getColor(R.color.white))
                        // 标题颜色 (默认白色)
                        .titleTextColor(getResources().getColor(R.color.white))
                        // 开启多选   (默认为多选)  (单选 为 singleSelect)
//                        .singleSelect()
//                        .crop()
                        // 多选时的最大数量   (默认12张)
                        .mutiSelectMaxSize(12)
                        // 已选择的图片路径
                        .pathList(path)
                        // 拍照后存放的图片路径(默认 /temp/picture)
                        .filePath("/temp/picture")
                        // 开启拍照功能 (默认开启)
                        .showCamera()
                        .requestCode(REQUEST_CODE)
                        .build();


                ImageSelector.open(MainActivity.this, imageConfig);   // 开启图片选择器

            }
        });

        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        recycler.setLayoutManager(gridLayoutManager);
        adapter = new Adapter(this, path);
        recycler.setAdapter(adapter);

    }

    public static final int REQUEST_CODE = 1000;

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
            List<String> pathList = data.getStringArrayListExtra(ImageSelectorActivity.EXTRA_RESULT);

            for (String path : pathList) {
                Log.i("ImagePathList", path);
            }

            path.clear();
            path.addAll(pathList);
            adapter.notifyDataSetChanged();


        }
    }
}
GlideLoader代码部分
import android.content.Context;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

/**
 * Created by hp on 2017/5/14.
 */

public class GlideLoader implements com.yancy.imageselector.ImageLoader {

    @Override
    public void displayImage(Context context, String path, ImageView imageView) {
        Glide.with(context)
                .load(path)
                .placeholder(com.yancy.imageselector.R.mipmap.imageselector_photo)
                .centerCrop()
                .into(imageView);
    }

}
Adapter代码部分
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

import java.util.List;

/**
 * Created by hp on 2017/5/14.
 */

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {

    private Context context;
    private LayoutInflater mLayoutInflater;
    private List<String> result;
    private final static String TAG = "Adapter";

    public Adapter(Context context, List<String> result) {
        mLayoutInflater = LayoutInflater.from(context);
        this.context = context;
        this.result = result;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewHolder(mLayoutInflater.inflate(R.layout.image, null));
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Glide.with(context)
                .load(result.get(position))
                .centerCrop()
                .into(holder.image);

    }

    @Override
    public int getItemCount() {
        return result.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        ImageView image;

        public ViewHolder(View itemView) {
            super(itemView);
            image = (ImageView) itemView.findViewById(R.id.image);
        }

    }


}
这样就可以进行图库图片的多选了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值