# PhotoPicker **Repository Path**: yupeng/PhotoPicker ## Basic Information - **Project Name**: PhotoPicker - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PhotoPicker 一个属于material design风格的图片选择库 # Image Show ![操作演示][1] # 目录结构 ``` PhotoPicker Library com.jay.ui |--entity |--Photo.java |--widget |--SquareFrameLayout.java |--TouchImageView.java |--PhotoPickerActivity.java |--PhotoPreviewFragment.java ``` # dependencies ``` compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:recyclerview-v7:23.3.0' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.android.support:design:23.3.0' ``` # user permission ``` ``` # Code ``` /*调用姿势*/ Intent intent = new Intent(MainActivity.this, PhotoPickerActivity.class); switch (v.getId()) { case R.id.btn1://单选 isMultiSelect = false; break; case R.id.btn2://多选 isMultiSelect = true; Bundle bundle = new Bundle(); bundle.putBoolean(PhotoPickerActivity.IS_MULTI_SELECT, true);//设置是否支持多选 bundle.putInt(PhotoPickerActivity.MAX_SELECT_SIZE, MAX_COUNT);//设置最大选择数量 intent.putExtras(bundle); break; } startActivityForResult(intent,REQUEST_CODE); /*回传接收*/ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { if (isMultiSelect) { //多选 ArrayList results = data.getStringArrayListExtra(PhotoPickerActivity.SELECT_RESULTS_ARRAY); }else{ //单选 String result = data.getStringExtra(PhotoPickerActivity.SELECT_RESULTS); } } } ``` # Photo.java 图片对象JavaBean ``` public String uri;//图片原图地址 public boolean isChecked;//当前对象在列表是否为选中状态 ``` # SquareFrameLayout.java 方形帧布局,主要保证列表页面显示的View为正方形; 仅仅重写了onMeasure方法,将widthMeasureSpec传给了父类heightMeasureSpec的位置 ``` @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec,widthMeasureSpec); } ``` # TouchImageView.java from github [TouchImageView][3] # PhotoPickerActivity.java 核心类,负责加载本地所有图片并显示; 图片查询采用实现 LoaderManager.LoaderCallbacks 接口进行媒体库的图片查询; 图片列表的展示使用 RecyclerView 进行Grid形式排列显示 # PhotoPreviewFragment.java 图片大图预览类 # 使用注意事项 前言:本项目基本是按MD风格进行设计开发的,所以大家使用的时候请慎重考虑<风格如需要改,可考虑自己下载源码进行修改> - 本项目用到了Toolbar,所以请大家在配置的时候至少请设置PhotoPickerActivity的Theme为NoActionBar样式 - 上面提到的dependencies请保证添加 - 本项目使用的icon为SVG格式,所以请保证做到SVG的支持 [1]: https://github.com/JaySong/PhotoPicker/blob/master/1.gif [3]: https://github.com/MikeOrtiz/TouchImageView # 关于 CSDN Blog:http://blog.csdn.net/qJay_Dev/article/details/51182893