Support initial seleted images setting
This commit is contained in:
parent
ddb5734e79
commit
4676bb6853
10
README.md
10
README.md
|
|
@ -56,7 +56,7 @@ No more steps, just enjoy. :)
|
|||
|
||||
###Custom Activity Style
|
||||
* Custome your own Activity
|
||||
``` java
|
||||
```java
|
||||
class CustomerActivity extends Activity implements MultiImageSelectorFragment.Callback{
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -95,6 +95,14 @@ class CustomerActivity extends Activity implements MultiImageSelectorFragment.Ca
|
|||
|
||||
-------------------
|
||||
|
||||
###Change Log
|
||||
|
||||
* 2015-4-9
|
||||
1. Fixed. When set `EXTRA_SHOW_CAMERA` to `true`, the first grid item onclick event were messed.
|
||||
2. Add. Support initial selected image list.
|
||||
|
||||
-------------------
|
||||
|
||||
###Thanks
|
||||
|
||||
* [square-picasso](https://github.com/square/picasso) A powerful image downloading and caching library for Android
|
||||
|
|
|
|||
14
README_zh.md
14
README_zh.md
|
|
@ -1,5 +1,5 @@
|
|||
# MultiImageSelector
|
||||
仿微信实现多图选择。支持单选和多选两张模式
|
||||
仿微信实现多图选择。支持单选和多选两种模式
|
||||
|
||||
[English Doc](README.md)
|
||||
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
* 第2步
|
||||
代码中调用,例如:
|
||||
``` java
|
||||
```java
|
||||
Intent intent = new Intent(mContext, MultiImageSelectorActivity.class);
|
||||
|
||||
// 是否显示调用相机拍照
|
||||
|
|
@ -56,7 +56,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|||
|
||||
###自定义显示
|
||||
* 自定义Activity
|
||||
``` java
|
||||
```java
|
||||
class CustomerActivity extends Activity implements MultiImageSelectorFragment.Callback{
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -95,6 +95,14 @@ class CustomerActivity extends Activity implements MultiImageSelectorFragment.Ca
|
|||
|
||||
-------------------
|
||||
|
||||
###更新日志
|
||||
|
||||
* 2015-4-9
|
||||
1. 修复. 当设置 `EXTRA_SHOW_CAMERA` 为 `true` 时, 点击第一个Item会混乱的问题.
|
||||
2. 新增. 支持初始化图片选择设定。
|
||||
|
||||
-------------------
|
||||
|
||||
###感谢
|
||||
|
||||
* [square-picasso](https://github.com/square/picasso) A powerful image downloading and caching library for Android
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import android.widget.EditText;
|
|||
import android.widget.RadioGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import me.nereo.multi_image_selector.MultiImageSelectorActivity;
|
||||
|
|
@ -25,6 +26,8 @@ public class MainActivity extends ActionBarActivity {
|
|||
private RadioGroup mChoiceMode, mShowCamera;
|
||||
private EditText mRequestNum;
|
||||
|
||||
private ArrayList<String> mSelectPath;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
@ -73,6 +76,10 @@ public class MainActivity extends ActionBarActivity {
|
|||
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, maxNum);
|
||||
// 选择模式
|
||||
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, selectedMode);
|
||||
// 默认选择
|
||||
if(mSelectPath != null && mSelectPath.size()>0){
|
||||
intent.putExtra(MultiImageSelectorActivity.EXTRA_DEFAULT_SELECTED_LIST, mSelectPath);
|
||||
}
|
||||
startActivityForResult(intent, REQUEST_IMAGE);
|
||||
|
||||
}
|
||||
|
|
@ -84,9 +91,9 @@ public class MainActivity extends ActionBarActivity {
|
|||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if(requestCode == REQUEST_IMAGE){
|
||||
if(resultCode == RESULT_OK){
|
||||
List<String> path = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
|
||||
mSelectPath = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for(String p: path){
|
||||
for(String p: mSelectPath){
|
||||
sb.append(p);
|
||||
sb.append("\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
|
|||
public static final String EXTRA_SHOW_CAMERA = "show_camera";
|
||||
/** 选择结果,返回为 ArrayList<String> 图片路径集合 */
|
||||
public static final String EXTRA_RESULT = "select_result";
|
||||
/** 默认选择集 */
|
||||
public static final String EXTRA_DEFAULT_SELECTED_LIST = "default_list";
|
||||
|
||||
/** 单选 */
|
||||
public static final int MODE_SINGLE = 0;
|
||||
|
|
@ -43,11 +45,15 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
|
|||
mDefaultCount = intent.getIntExtra(EXTRA_SELECT_COUNT, 9);
|
||||
int mode = intent.getIntExtra(EXTRA_SELECT_MODE, MODE_MULTI);
|
||||
boolean isShow = intent.getBooleanExtra(EXTRA_SHOW_CAMERA, true);
|
||||
if(mode == MODE_MULTI && intent.hasExtra(EXTRA_DEFAULT_SELECTED_LIST)) {
|
||||
resultList = intent.getStringArrayListExtra(EXTRA_DEFAULT_SELECTED_LIST);
|
||||
}
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(MultiImageSelectorFragment.EXTRA_SELECT_COUNT, mDefaultCount);
|
||||
bundle.putInt(MultiImageSelectorFragment.EXTRA_SELECT_MODE, mode);
|
||||
bundle.putBoolean(MultiImageSelectorFragment.EXTRA_SHOW_CAMERA, isShow);
|
||||
bundle.putStringArrayList(MultiImageSelectorFragment.EXTRA_DEFAULT_SELECTED_LIST, resultList);
|
||||
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.add(R.id.image_grid, Fragment.instantiate(this, MultiImageSelectorFragment.class.getName(), bundle))
|
||||
|
|
@ -67,6 +73,9 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
|
|||
if(resultList == null || resultList.size()<=0){
|
||||
mSubmitButton.setText("完成");
|
||||
mSubmitButton.setEnabled(false);
|
||||
}else{
|
||||
mSubmitButton.setText("完成("+resultList.size()+"/"+mDefaultCount+")");
|
||||
mSubmitButton.setEnabled(true);
|
||||
}
|
||||
mSubmitButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
|
@ -110,6 +119,8 @@ public class MultiImageSelectorActivity extends FragmentActivity implements Mult
|
|||
if(resultList.contains(path)){
|
||||
resultList.remove(path);
|
||||
mSubmitButton.setText("完成("+resultList.size()+"/"+mDefaultCount+")");
|
||||
}else{
|
||||
mSubmitButton.setText("完成("+resultList.size()+"/"+mDefaultCount+")");
|
||||
}
|
||||
// 当为选择图片时候的状态
|
||||
if(resultList.size() == 0){
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ public class MultiImageSelectorFragment extends Fragment {
|
|||
public static final String EXTRA_SELECT_MODE = "select_count_mode";
|
||||
/** 是否显示相机,boolean类型 */
|
||||
public static final String EXTRA_SHOW_CAMERA = "show_camera";
|
||||
/** 默认选择的数据集 */
|
||||
public static final String EXTRA_DEFAULT_SELECTED_LIST = "default_result";
|
||||
/** 单选 */
|
||||
public static final int MODE_SINGLE = 0;
|
||||
/** 多选 */
|
||||
|
|
@ -114,6 +116,14 @@ public class MultiImageSelectorFragment extends Fragment {
|
|||
// 图片选择模式
|
||||
final int mode = getArguments().getInt(EXTRA_SELECT_MODE);
|
||||
|
||||
// 默认选择
|
||||
if(mode == MODE_MULTI) {
|
||||
ArrayList<String> tmp = getArguments().getStringArrayList(EXTRA_DEFAULT_SELECTED_LIST);
|
||||
if(tmp != null && tmp.size()>0) {
|
||||
resultList = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
// 是否显示照相机
|
||||
final boolean showCamera = getArguments().getBoolean(EXTRA_SHOW_CAMERA, true);
|
||||
mImageAdapter = new ImageGridAdapter(getActivity(), showCamera);
|
||||
|
|
@ -210,7 +220,7 @@ public class MultiImageSelectorFragment extends Fragment {
|
|||
mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
if(showCamera){
|
||||
if(mImageAdapter.isShowCamera()){
|
||||
// 如果显示照相机,则第一个Grid显示为照相机,处理特殊逻辑
|
||||
if(i == 0){
|
||||
showCameraAction();
|
||||
|
|
@ -413,6 +423,12 @@ public class MultiImageSelectorFragment extends Fragment {
|
|||
}while(data.moveToNext());
|
||||
|
||||
mImageAdapter.setData(images);
|
||||
|
||||
// 设定默认选择
|
||||
if(resultList != null && resultList.size()>0){
|
||||
mImageAdapter.setDefaultSelected(resultList);
|
||||
}
|
||||
|
||||
mFolderAdapter.setData(mResultFolder);
|
||||
hasFolderGened = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ public class FolderAdapter extends BaseAdapter {
|
|||
// 显示图片
|
||||
Picasso.with(mContext)
|
||||
.load(new File(data.cover.path))
|
||||
.error(R.drawable.default_error)
|
||||
.placeholder(R.drawable.default_error)
|
||||
.resize(mImageSize, mImageSize)
|
||||
.centerCrop()
|
||||
.into(cover);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package me.nereo.multi_image_selector.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -32,7 +33,6 @@ public class ImageGridAdapter extends BaseAdapter {
|
|||
private LayoutInflater mInflater;
|
||||
private boolean showCamera = true;
|
||||
private boolean showSelectIndicator = true;
|
||||
private boolean justChangeIndicator = false;
|
||||
|
||||
private List<Image> mImages = new ArrayList<>();
|
||||
private List<Image> mSelectedImages = new ArrayList<>();
|
||||
|
|
@ -61,6 +61,10 @@ public class ImageGridAdapter extends BaseAdapter {
|
|||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public boolean isShowCamera(){
|
||||
return showCamera;
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择某个图片,改变选择状态
|
||||
* @param image
|
||||
|
|
@ -71,17 +75,42 @@ public class ImageGridAdapter extends BaseAdapter {
|
|||
}else{
|
||||
mSelectedImages.add(image);
|
||||
}
|
||||
justChangeIndicator = true;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过图片路径设置默认选择
|
||||
* @param resultList
|
||||
*/
|
||||
public void setDefaultSelected(ArrayList<String> resultList) {
|
||||
for(String path : resultList){
|
||||
Image image = getImageByPath(path);
|
||||
if(image != null){
|
||||
mSelectedImages.add(image);
|
||||
}
|
||||
}
|
||||
if(mSelectedImages.size() > 0){
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
private Image getImageByPath(String path){
|
||||
if(mImages != null && mImages.size()>0){
|
||||
for(Image image : mImages){
|
||||
if(image.path.equalsIgnoreCase(path)){
|
||||
return image;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置数据集
|
||||
* @param images
|
||||
*/
|
||||
public void setData(List<Image> images) {
|
||||
mSelectedImages.clear();
|
||||
justChangeIndicator = false;
|
||||
|
||||
if(images != null && images.size()>0){
|
||||
mImages = images;
|
||||
|
|
@ -224,7 +253,7 @@ public class ImageGridAdapter extends BaseAdapter {
|
|||
Picasso.with(mContext)
|
||||
.load(imageFile)
|
||||
.placeholder(R.drawable.default_error)
|
||||
.error(R.drawable.default_error)
|
||||
//.error(R.drawable.default_error)
|
||||
.resize(mItemSize, mItemSize)
|
||||
.centerCrop()
|
||||
.into(image);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@
|
|||
android:id="@+id/cover"
|
||||
tools:src="@drawable/btn_back"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:scaleType="centerCrop"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/default_error"
|
||||
android:layout_width="@dimen/folder_cover_size"
|
||||
android:layout_height="@dimen/folder_cover_size" />
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:scaleType="centerCrop"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/default_error"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue