Skip to content

Commit e800195

Browse files
author
ChenRui
committed
图片选择器
1 parent e1e963d commit e800195

File tree

3 files changed

+85
-23
lines changed

3 files changed

+85
-23
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
1010
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
1111
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
12+
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
13+
<uses-permission android:name="android.permission.CAMERA"/>
1214
<uses-permission android:name="android.permission.INTERNET"/>
1315
<!--<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
1416
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
@@ -27,23 +29,23 @@
2729
android:name=".activity.LauncherActivity"
2830
android:screenOrientation="portrait"
2931
android:theme="@style/AppTheme.NoActionBar.FullScreen">
30-
<intent-filter>
31-
<action android:name="android.intent.action.MAIN"/>
32+
<!-- <intent-filter>
33+
<action android:name="android.intent.action.MAIN"/>
3234
33-
<category android:name="android.intent.category.LAUNCHER"/>
34-
</intent-filter>
35+
<category android:name="android.intent.category.LAUNCHER"/>
36+
</intent-filter>-->
3537
</activity>
3638

3739
<!--主界面-->
3840
<activity
3941
android:name=".activity.MainActivity"
4042
android:screenOrientation="portrait"
4143
android:theme="@style/AppTheme.Dark">
42-
<!-- <intent-filter>
43-
<action android:name="android.intent.action.MAIN"/>
44+
<!-- <intent-filter>
45+
<action android:name="android.intent.action.MAIN"/>
4446
45-
<category android:name="android.intent.category.LAUNCHER"/>
46-
</intent-filter>-->
47+
<category android:name="android.intent.category.LAUNCHER"/>
48+
</intent-filter>-->
4749
</activity>
4850

4951
<activity
@@ -139,16 +141,16 @@
139141

140142
<activity
141143
android:name=".activity.PostMomentActivity"
142-
android:screenOrientation="portrait">
143-
<!-- <intent-filter>
144-
<action android:name="android.intent.action.MAIN"/>
145-
<category android:name="android.intent.category.LAUNCHER"/>
146-
</intent-filter>-->
147-
</activity>
144+
android:screenOrientation="portrait"/>
148145
<activity
149146
android:name=".activity.ImageSelectionActivity"
150147
android:label="@string/label_image_selection"
151-
android:screenOrientation="portrait"/>
148+
android:screenOrientation="portrait">
149+
<intent-filter>
150+
<action android:name="android.intent.action.MAIN"/>
151+
<category android:name="android.intent.category.LAUNCHER"/>
152+
</intent-filter>
153+
</activity>
152154

153155
<service
154156
android:name=".service.CnblogsService"

app/src/main/java/com/rae/cnblogs/activity/ImageSelectionActivity.java

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.rae.cnblogs.activity;
22

3+
import android.Manifest;
34
import android.content.ContentResolver;
5+
import android.content.pm.PackageManager;
46
import android.database.Cursor;
57
import android.net.Uri;
8+
import android.os.Build;
69
import android.os.Bundle;
710
import android.provider.MediaStore;
11+
import android.support.annotation.NonNull;
812
import android.support.annotation.Nullable;
13+
import android.support.v4.app.ActivityCompat;
914
import android.support.v7.widget.GridLayoutManager;
1015
import android.support.v7.widget.RecyclerView;
1116
import android.view.LayoutInflater;
@@ -19,12 +24,15 @@
1924
import com.rae.cnblogs.AppUI;
2025
import com.rae.cnblogs.GlideApp;
2126
import com.rae.cnblogs.R;
27+
import com.rae.cnblogs.widget.AppLayout;
2228

2329
import java.io.File;
2430
import java.util.ArrayList;
2531
import java.util.List;
2632

2733
import butterknife.BindView;
34+
import in.srain.cube.views.ptr.PtrDefaultHandler;
35+
import in.srain.cube.views.ptr.PtrFrameLayout;
2836

2937
/**
3038
* 图片选择
@@ -33,6 +41,8 @@
3341
public class ImageSelectionActivity extends BaseActivity {
3442
@BindView(R.id.recycler_view)
3543
RecyclerView mRecyclerView;
44+
@BindView(R.id.ptr_content)
45+
AppLayout mPtrContentView;
3646
private ImageSelectionAdapter mAdapter;
3747

3848
@Override
@@ -43,12 +53,50 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4353
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
4454
mAdapter = new ImageSelectionAdapter();
4555
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;
4690
}
4791

4892
@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+
}
52100
}
53101

54102
/**
@@ -75,6 +123,7 @@ private void loadImageData() {
75123

76124
mAdapter.setImageList(result);
77125
mAdapter.notifyDataSetChanged();
126+
mPtrContentView.refreshComplete();
78127
}
79128

80129

@@ -114,8 +163,11 @@ public ImageSelectionHolder onCreateViewHolder(ViewGroup parent, int i) {
114163
@Override
115164
public void onBindViewHolder(ImageSelectionHolder holder, int position) {
116165
String fileName = mUrls.get(position);
166+
117167
holder.mCheckBox.setTag(position);
168+
holder.mCheckBox.setOnClickListener(this);
118169
holder.mCheckBoxLayout.setOnClickListener(this);
170+
119171
holder.mCheckBox.setChecked(mSelectedList.contains(fileName));
120172
if (holder.mCheckBox.isChecked()) {
121173
holder.mPositionTextView.setVisibility(View.VISIBLE);
@@ -143,7 +195,10 @@ public void setImageList(List<String> imageList) {
143195
@Override
144196
public void onClick(View v) {
145197
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);
147202
}
148203
}
149204

app/src/main/res/layout/activity_image_selection.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,16 @@
3939

4040
</android.support.v7.widget.Toolbar>
4141

42-
<android.support.v7.widget.RecyclerView
43-
android:id="@+id/recycler_view"
42+
<com.rae.cnblogs.widget.AppLayout
43+
android:id="@+id/ptr_content"
4444
android:layout_width="match_parent"
45-
android:layout_height="match_parent"
46-
android:background="@color/background_divider"/>
45+
android:layout_height="match_parent">
4746

47+
<android.support.v7.widget.RecyclerView
48+
android:id="@+id/recycler_view"
49+
android:layout_width="match_parent"
50+
android:layout_height="match_parent"
51+
android:background="@color/background_divider"/>
52+
</com.rae.cnblogs.widget.AppLayout>
4853

4954
</LinearLayout>

0 commit comments

Comments
 (0)