Skip to content

Commit a48cea8

Browse files
committed
multiview
1 parent 4dd474b commit a48cea8

File tree

11 files changed

+206
-69
lines changed

11 files changed

+206
-69
lines changed

PhotoPicker-release.aar

19.4 KB
Binary file not shown.

PhotoPicker/src/main/java/me/iwf/photopicker/widget/MultiPickResultView.java

+15
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.lang.annotation.Retention;
1616
import java.lang.annotation.RetentionPolicy;
1717
import java.util.ArrayList;
18+
import java.util.List;
1819

1920
import me.iwf.photopicker.PhotoPickUtils;
2021

@@ -93,11 +94,25 @@ public void init(Activity context,@MultiPicAction int action, ArrayList<String>
9394
photoAdapter = new PhotoAdapter(context, selectedPhotos);
9495
photoAdapter.setAction(action);
9596
recyclerView.setAdapter(photoAdapter);
97+
//recyclerView.setLayoutFrozen(true);
9698

9799

98100
}
99101

100102

103+
public void showPics(List<String> paths){
104+
if (paths != null){
105+
selectedPhotos.clear();
106+
selectedPhotos.addAll(paths);
107+
photoAdapter.notifyDataSetChanged();
108+
}
109+
110+
}
111+
112+
113+
114+
115+
101116

102117

103118

PhotoPicker/src/main/java/me/iwf/photopicker/widget/PhotoAdapter.java

+38-6
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class PhotoAdapter extends RecyclerView.Adapter<PhotoAdapter.PhotoViewHol
3030

3131
private Context mContext;
3232

33+
3334
public void setAction(@MultiPickResultView.MultiPicAction int action) {
3435
this.action = action;
3536
}
@@ -43,6 +44,7 @@ public PhotoAdapter(Context mContext, ArrayList<String> photoPaths) {
4344
this.photoPaths = photoPaths;
4445
this.mContext = mContext;
4546
inflater = LayoutInflater.from(mContext);
47+
padding = dip2Px(8);
4648

4749
}
4850

@@ -68,18 +70,30 @@ public void refresh(ArrayList<String> photoPaths){
6870
return new PhotoViewHolder(itemView);
6971
}
7072

73+
public int dip2Px(int dip) {
74+
// px/dip = density;
75+
float density = mContext.getResources().getDisplayMetrics().density;
76+
int px = (int) (dip * density + .5f);
77+
return px;
78+
}
7179

80+
int padding;
7281
@Override
7382
public void onBindViewHolder(final PhotoViewHolder holder, final int position) {
7483

7584
if (action == MultiPickResultView.ACTION_SELECT){
85+
// RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.ivPhoto.getLayoutParams();
86+
87+
holder.ivPhoto.setPadding(padding,padding,padding,padding);
88+
89+
7690
if (position == getItemCount() -1){//最后一个始终是+号,点击能够跳去添加图片
7791
Glide.with(mContext)
7892
.load("")
7993
.centerCrop()
8094
.thumbnail(0.1f)
81-
.placeholder(R.drawable.icon_propser_add)
82-
.error(R.drawable.icon_propser_add)
95+
.placeholder(R.drawable.icon_pic_default)
96+
.error(R.drawable.icon_pic_default)
8397
.into(holder.ivPhoto);
8498
holder.ivPhoto.setOnClickListener(new View.OnClickListener() {
8599
@Override
@@ -89,12 +103,14 @@ public void onClick(View v) {
89103
}else {
90104
PhotoPickUtils.startPick((Activity) mContext,photoPaths);
91105
}
92-
93106
}
94107
});
95108

109+
holder.deleteBtn.setVisibility(View.GONE);
110+
96111
}else {
97-
//String str = photoPaths.get(position);
112+
String str = photoPaths.get(position);
113+
Log.e("file",str);
98114
Uri uri = Uri.fromFile(new File(photoPaths.get(position)));
99115
Glide.with(mContext)
100116
.load(uri)
@@ -104,10 +120,19 @@ public void onClick(View v) {
104120
.error(R.drawable.__picker_ic_broken_image_black_48dp)
105121
.into(holder.ivPhoto);
106122

107-
holder.ivPhoto.setOnClickListener(new View.OnClickListener() {
123+
124+
holder.deleteBtn.setVisibility(View.VISIBLE);
125+
holder.deleteBtn.setOnClickListener(new View.OnClickListener() {
108126
@Override
109127
public void onClick(View v) {
128+
photoPaths.remove(position);
129+
notifyDataSetChanged();
130+
}
131+
});
110132

133+
holder.ivPhoto.setOnClickListener(new View.OnClickListener() {
134+
@Override
135+
public void onClick(View v) {
111136
PhotoPreview.builder()
112137
.setPhotos(photoPaths)
113138
.setAction(action)
@@ -121,7 +146,9 @@ public void onClick(View v) {
121146
//Uri uri = Uri.parse(photoPaths.get(position));
122147
Log.e("pic",photoPaths.get(position));
123148
Glide.with(mContext)
124-
.load("http://i.imgur.com/idojSYm.png")
149+
.load(photoPaths.get(position))
150+
.centerCrop()
151+
.thumbnail(0.1f)
125152
.placeholder(R.drawable.__picker_default_weixin)
126153
.error(R.drawable.__picker_ic_broken_image_black_48dp)
127154
.into(holder.ivPhoto);
@@ -145,6 +172,8 @@ public void onClick(View v) {
145172
}
146173

147174

175+
176+
148177
@Override public int getItemCount() {
149178
return action == MultiPickResultView.ACTION_SELECT ? photoPaths.size()+1 : photoPaths.size();
150179
}
@@ -154,13 +183,16 @@ public static class PhotoViewHolder extends RecyclerView.ViewHolder {
154183
private ImageView ivPhoto;
155184
private View vSelected;
156185
public View cover;
186+
public View deleteBtn;
157187
public PhotoViewHolder(View itemView) {
158188
super(itemView);
159189
ivPhoto = (ImageView) itemView.findViewById(R.id.iv_photo);
160190
vSelected = itemView.findViewById(R.id.v_selected);
161191
vSelected.setVisibility(View.GONE);
162192
cover = itemView.findViewById(R.id.cover);
163193
cover.setVisibility(View.GONE);
194+
deleteBtn = itemView.findViewById(R.id.v_delete);
195+
deleteBtn.setVisibility(View.GONE);
164196
}
165197
}
166198

Loading
Loading

PhotoPicker/src/main/res/layout/__picker_item_photo.xml

+8
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
android:layout_width="match_parent"
2121
android:layout_height="match_parent"/>
2222

23+
<View
24+
android:visibility="gone"
25+
android:id="@+id/v_delete"
26+
android:background="@drawable/icon_delete"
27+
android:layout_alignParentRight="true"
28+
android:layout_width="15dp"
29+
android:layout_height="15dp"/>
30+
2331
<ImageView
2432
android:layout_margin="5dip"
2533
android:layout_alignParentTop="true"

README.md

+46-1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ demo apk:见项目根目录下demo.apk
5050

5151

5252

53+
封装好的图片显示组件:(上方是图片选择,下面是只显示图片的组件)
54+
55+
![multview](multview.png)
56+
57+
58+
5359
---
5460

5561
# Usage
@@ -67,21 +73,60 @@ Add it in your root build.gradle at the end of repositories:
6773
Step 2. Add the dependency
6874

6975
dependencies {
70-
compile 'com.github.glassLake:PhotoPicker:1.0.0'
76+
compile 'com.github.glassLake:PhotoPicker:1.0.1'
7177
}
7278

7379

7480

81+
## 完全使用封装好的组件
82+
83+
84+
85+
xml:
86+
87+
```
88+
<me.iwf.photopicker.widget.MultiPickResultView
89+
android:layout_width="match_parent"
90+
android:layout_height="wrap_content"
91+
android:id="@+id/recycler_view"/>
92+
```
93+
94+
选择图片并显示图片:
95+
96+
```
97+
recyclerView = (MultiPickResultView) findViewById(R.id.recycler_view);
98+
recyclerView.init(this,MultiPickResultView.ACTION_SELECT,null);
99+
100+
//onActivityResult里一行代码回调
101+
recyclerView.onActivityResult(requestCode,resultCode,data);
102+
```
103+
104+
105+
106+
只显示图片
107+
108+
```
109+
//可以初始化时传入地址
110+
recyclerViewShowOnly.init(this,MultiPickResultView.ACTION_ONLY_SHOW,pathslook);
111+
112+
//也可以后续设置地址:
113+
recyclerViewShowOnly.showPics(pathslook);
114+
```
75115

76116

77117

78118

79119

80120
### Pick Photo
121+
81122
```java
82123
PhotoPickUtils.startPick(this);
83124
```
84125

126+
127+
128+
129+
85130
###
86131

87132
### onActivityResult

demo.apk

-90.5 KB
Binary file not shown.

multview.png

869 KB
Loading

photopickerdemo/src/main/java/me/iwf/PhotoPickerDemo/MainActivity.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,34 @@ enum RequestCode {
3232
}
3333
}
3434
MultiPickResultView recyclerView;
35+
36+
MultiPickResultView recyclerViewShowOnly;
3537
/* PhotoAdapter photoAdapter;
3638
3739
ArrayList<String> selectedPhotos = new ArrayList<>();*/
3840

3941
//public final static int REQUEST_CODE = 1;
4042

43+
ArrayList<String> pathslook ;
44+
4145
@Override protected void onCreate(Bundle savedInstanceState) {
4246
super.onCreate(savedInstanceState);
4347
setContentView(R.layout.activity_main);
48+
pathslook = new ArrayList<>();
4449

4550
recyclerView = (MultiPickResultView) findViewById(R.id.recycler_view);
51+
recyclerView.init(this,MultiPickResultView.ACTION_SELECT,null);
52+
53+
recyclerViewShowOnly = (MultiPickResultView) findViewById(R.id.recycler_onlylook);
54+
recyclerViewShowOnly.init(this,MultiPickResultView.ACTION_ONLY_SHOW,pathslook);
4655
ArrayList<String> photos = new ArrayList<>();
4756
photos.add("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2545179197,2573899739&fm=21&gp=0.jpg");
4857
photos.add("https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1471325032244&di=71570ed352a1b823584c3b3b1b5bd57f&imgtype=jpg&src=http%3A%2F%2Ffile27.mafengwo.net%2FM00%2FB2%2F12%2FwKgB6lO0ahWAMhL8AAV1yBFJDJw20.jpeg");
4958
photos.add("https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1471325032243&di=67dfaed98491c3a94965571ed4343951&imgtype=jpg&src=http%3A%2F%2Fwww.5068.com%2Fu%2Ffaceimg%2F20140725173411.jpg");
5059
photos.add("https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1471325032243&di=d40f796d46782144ba0adf798253f080&imgtype=jpg&src=http%3A%2F%2Fimglf0.ph.126.net%2F1EnYPI5Vzo2fCkyy2GsJKg%3D%3D%2F2829667940890114965.jpg");
5160
photos.add("https://timgsa.baidu.com/timg?image&quality=80&size=b10000_10000&sec=1471325032243&di=bbb10b09ddb5338b53432af1c3789c39&imgtype=jpg&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAA%2FwKgB4lMC256AYLqGAAGklurKzyM52.rbook_comment.w1024.jpeg");
5261

53-
recyclerView.init(this,MultiPickResultView.ACTION_SELECT,null);
62+
5463
/* photoAdapter = new PhotoAdapter(this, selectedPhotos);
5564
5665
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(4, OrientationHelper.VERTICAL));
@@ -111,6 +120,10 @@ public void onClick(View v) {
111120

112121
recyclerView.onActivityResult(requestCode,resultCode,data);
113122

123+
124+
125+
recyclerViewShowOnly.showPics(recyclerView.getPhotos());
126+
114127
/* PhotoPickUtils.onActivityResult(requestCode, resultCode, data, new PhotoPickUtils.PickHandler() {
115128
@Override
116129
public void onPickSuccess(ArrayList<String> photos) {

0 commit comments

Comments
 (0)