本人是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); } } }这样就可以进行图库图片的多选了