1
1
package com .rae .cnblogs .activity ;
2
2
3
+ import android .Manifest ;
3
4
import android .content .ContentResolver ;
5
+ import android .content .pm .PackageManager ;
4
6
import android .database .Cursor ;
5
7
import android .net .Uri ;
8
+ import android .os .Build ;
6
9
import android .os .Bundle ;
7
10
import android .provider .MediaStore ;
11
+ import android .support .annotation .NonNull ;
8
12
import android .support .annotation .Nullable ;
13
+ import android .support .v4 .app .ActivityCompat ;
9
14
import android .support .v7 .widget .GridLayoutManager ;
10
15
import android .support .v7 .widget .RecyclerView ;
11
16
import android .view .LayoutInflater ;
19
24
import com .rae .cnblogs .AppUI ;
20
25
import com .rae .cnblogs .GlideApp ;
21
26
import com .rae .cnblogs .R ;
27
+ import com .rae .cnblogs .widget .AppLayout ;
22
28
23
29
import java .io .File ;
24
30
import java .util .ArrayList ;
25
31
import java .util .List ;
26
32
27
33
import butterknife .BindView ;
34
+ import in .srain .cube .views .ptr .PtrDefaultHandler ;
35
+ import in .srain .cube .views .ptr .PtrFrameLayout ;
28
36
29
37
/**
30
38
* 图片选择
33
41
public class ImageSelectionActivity extends BaseActivity {
34
42
@ BindView (R .id .recycler_view )
35
43
RecyclerView mRecyclerView ;
44
+ @ BindView (R .id .ptr_content )
45
+ AppLayout mPtrContentView ;
36
46
private ImageSelectionAdapter mAdapter ;
37
47
38
48
@ Override
@@ -43,12 +53,50 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
43
53
mRecyclerView .setLayoutManager (new GridLayoutManager (this , 3 ));
44
54
mAdapter = new ImageSelectionAdapter ();
45
55
mRecyclerView .setAdapter (mAdapter );
56
+ mPtrContentView .setPtrHandler (new PtrDefaultHandler () {
57
+ @ Override
58
+ public void onRefreshBegin (PtrFrameLayout frame ) {
59
+ start ();
60
+ }
61
+ });
62
+ start ();
63
+ }
64
+
65
+ private void start () {
66
+ // 先检查权限
67
+ if (requestPermissions ()) {
68
+ loadImageData ();
69
+ }
70
+ }
71
+
72
+ /**
73
+ * 申请权限
74
+ */
75
+ private boolean requestPermissions () {
76
+ // 检查权限
77
+ if (checkPermission (Manifest .permission .READ_EXTERNAL_STORAGE )) {
78
+ AppUI .toast (this , "请允许访问存储卡权限" );
79
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT ) {
80
+ ActivityCompat .requestPermissions (this , new String []{Manifest .permission .READ_EXTERNAL_STORAGE }, 100 );
81
+ }
82
+ return false ;
83
+ }
84
+
85
+ return true ;
86
+ }
87
+
88
+ private boolean checkPermission (String permission ) {
89
+ return ActivityCompat .checkSelfPermission (this , permission ) != PackageManager .PERMISSION_GRANTED ;
46
90
}
47
91
48
92
@ Override
49
- protected void onResume () {
50
- super .onResume ();
51
- loadImageData ();
93
+ public void onRequestPermissionsResult (int requestCode , @ NonNull String [] permissions , @ NonNull int [] grantResults ) {
94
+ super .onRequestPermissionsResult (requestCode , permissions , grantResults );
95
+
96
+ // 允许权限,重新加载
97
+ if (requestCode == 100 && grantResults .length > 0 && grantResults [0 ] == PackageManager .PERMISSION_GRANTED ) {
98
+ loadImageData ();
99
+ }
52
100
}
53
101
54
102
/**
@@ -75,6 +123,7 @@ private void loadImageData() {
75
123
76
124
mAdapter .setImageList (result );
77
125
mAdapter .notifyDataSetChanged ();
126
+ mPtrContentView .refreshComplete ();
78
127
}
79
128
80
129
@@ -114,8 +163,11 @@ public ImageSelectionHolder onCreateViewHolder(ViewGroup parent, int i) {
114
163
@ Override
115
164
public void onBindViewHolder (ImageSelectionHolder holder , int position ) {
116
165
String fileName = mUrls .get (position );
166
+
117
167
holder .mCheckBox .setTag (position );
168
+ holder .mCheckBox .setOnClickListener (this );
118
169
holder .mCheckBoxLayout .setOnClickListener (this );
170
+
119
171
holder .mCheckBox .setChecked (mSelectedList .contains (fileName ));
120
172
if (holder .mCheckBox .isChecked ()) {
121
173
holder .mPositionTextView .setVisibility (View .VISIBLE );
@@ -143,7 +195,10 @@ public void setImageList(List<String> imageList) {
143
195
@ Override
144
196
public void onClick (View v ) {
145
197
if (v .getId () == R .id .rl_checkbox ) {
146
- onCheckBoxClick ((CompoundButton ) v .findViewById (R .id .cb_checkbox ));
198
+ v .findViewById (R .id .cb_checkbox ).performClick ();
199
+ }
200
+ if (v .getId () == R .id .cb_checkbox ) {
201
+ onCheckBoxClick ((CompoundButton ) v );
147
202
}
148
203
}
149
204
0 commit comments