Skip to content

Commit 3b6f528

Browse files
committed
refactor: 使用 Activity Result Api 重构代码
https://developer.android.com/training/basics/intents/result
1 parent 355b44a commit 3b6f528

File tree

6 files changed

+444
-564
lines changed

6 files changed

+444
-564
lines changed

app/src/main/java/com/linchaolong/android/imagepicker/demo/MainActivity.java

Lines changed: 59 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
import android.content.Intent;
44
import android.net.Uri;
55
import android.os.Bundle;
6-
import androidx.annotation.NonNull;
7-
import androidx.appcompat.app.AppCompatActivity;
86
import android.view.View;
7+
8+
import androidx.appcompat.app.AppCompatActivity;
9+
910
import com.facebook.drawee.generic.RoundingParams;
1011
import com.facebook.drawee.view.SimpleDraweeView;
1112
import com.linchaolong.android.imagepicker.ImagePicker;
@@ -14,76 +15,71 @@
1415

1516
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
1617

17-
private ImagePicker imagePicker = new ImagePicker();
18-
private SimpleDraweeView draweeView;
18+
private ImagePicker imagePicker;
19+
private SimpleDraweeView draweeView;
1920

20-
@Override protected void onCreate(Bundle savedInstanceState) {
21-
super.onCreate(savedInstanceState);
22-
setContentView(R.layout.activity_main);
21+
@Override
22+
protected void onCreate(Bundle savedInstanceState) {
23+
super.onCreate(savedInstanceState);
24+
setContentView(R.layout.activity_main);
25+
findViewById(R.id.fragmentTest).setOnClickListener(this);
26+
draweeView = findViewById(R.id.draweeView);
27+
draweeView.setOnClickListener(this);
2328

24-
// 设置标题
25-
imagePicker.setTitle("设置头像");
26-
// 设置是否裁剪图片
27-
imagePicker.setCropImage(true);
29+
imagePicker = new ImagePicker(this, new ImagePicker.Callback() {
30+
// 选择图片回调
31+
@Override
32+
public void onPickImage(Uri imageUri) {
2833

29-
findViewById(R.id.fragmentTest).setOnClickListener(this);
30-
draweeView = findViewById(R.id.draweeView);
31-
draweeView.setOnClickListener(this);
32-
}
34+
}
3335

34-
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
35-
super.onActivityResult(requestCode, resultCode, data);
36-
imagePicker.onActivityResult(this, requestCode, resultCode, data);
37-
}
36+
// 裁剪图片回调
37+
@Override
38+
public void onCropImage(Uri imageUri) {
39+
draweeView.setImageURI(imageUri);
40+
draweeView.getHierarchy().setRoundingParams(RoundingParams.asCircle());
41+
}
3842

39-
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
40-
@NonNull int[] grantResults) {
41-
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
42-
imagePicker.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
43-
}
43+
// 自定义裁剪配置
44+
@Override
45+
public void cropConfig(CropImage.ActivityBuilder builder) {
46+
builder
47+
// 是否启动多点触摸
48+
.setMultiTouchEnabled(false)
49+
// 设置网格显示模式
50+
.setGuidelines(CropImageView.Guidelines.OFF)
51+
// 圆形/矩形
52+
.setCropShape(CropImageView.CropShape.RECTANGLE)
53+
// 调整裁剪后的图片最终大小
54+
.setRequestedSize(960, 540)
55+
// 宽高比
56+
.setAspectRatio(16, 9);
57+
}
4458

45-
private void startChooser() {
46-
// 启动图片选择器
47-
imagePicker.startChooser(this, new ImagePicker.Callback() {
48-
// 选择图片回调
49-
@Override public void onPickImage(Uri imageUri) {
59+
// 用户拒绝授权回调
60+
@Override
61+
public void onPermissionDenied(String permissions) {
62+
}
63+
});
5064

51-
}
52-
53-
// 裁剪图片回调
54-
@Override public void onCropImage(Uri imageUri) {
55-
draweeView.setImageURI(imageUri);
56-
draweeView.getHierarchy().setRoundingParams(RoundingParams.asCircle());
57-
}
58-
59-
// 自定义裁剪配置
60-
@Override public void cropConfig(CropImage.ActivityBuilder builder) {
61-
builder
62-
// 是否启动多点触摸
63-
.setMultiTouchEnabled(false)
64-
// 设置网格显示模式
65-
.setGuidelines(CropImageView.Guidelines.OFF)
66-
// 圆形/矩形
67-
.setCropShape(CropImageView.CropShape.RECTANGLE)
68-
// 调整裁剪后的图片最终大小
69-
.setRequestedSize(960, 540)
70-
// 宽高比
71-
.setAspectRatio(16, 9);
72-
}
65+
// 设置标题
66+
imagePicker.setTitle("设置头像");
67+
// 设置是否裁剪图片
68+
imagePicker.setCropImage(true);
69+
}
7370

74-
// 用户拒绝授权回调
75-
@Override public void onPermissionDenied(int requestCode, String[] permissions,
76-
int[] grantResults) {
77-
}
78-
});
79-
}
71+
private void startChooser() {
72+
// 启动图片选择器
73+
imagePicker.startChooser();
74+
}
8075

81-
@Override public void onClick(View v) {
82-
if (v.getId() == R.id.draweeView) {
83-
startChooser();
84-
} else if (v.getId() == R.id.fragmentTest) {
85-
startActivity(new Intent(this, FragmentTestActivity.class));
76+
@Override
77+
public void onClick(View v) {
78+
if (v.getId() == R.id.draweeView) {
79+
startChooser();
80+
} else if (v.getId() == R.id.fragmentTest) {
81+
startActivity(new Intent(this, FragmentTestActivity.class));
82+
}
8683
}
87-
}
8884
}
8985

Lines changed: 56 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package com.linchaolong.android.imagepicker.demo;
22

33
import android.content.DialogInterface;
4-
import android.content.Intent;
54
import android.net.Uri;
65
import android.os.Bundle;
7-
import androidx.annotation.NonNull;
8-
import androidx.annotation.Nullable;
9-
import androidx.fragment.app.Fragment;
10-
import androidx.appcompat.app.AlertDialog;
116
import android.view.Gravity;
127
import android.view.LayoutInflater;
138
import android.view.View;
149
import android.view.ViewGroup;
1510
import android.widget.ImageView;
1611

12+
import androidx.annotation.Nullable;
13+
import androidx.appcompat.app.AlertDialog;
14+
import androidx.fragment.app.Fragment;
15+
1716
import com.linchaolong.android.imagepicker.ImagePicker;
1817
import com.linchaolong.android.imagepicker.cropper.CropImageView;
1918

@@ -22,66 +21,60 @@
2221
*/
2322
public class TestFragment extends Fragment {
2423

25-
private ImagePicker imagePicker = new ImagePicker();
26-
private ImageView imageView;
27-
private CropImageView cropImageView;
28-
29-
@Nullable @Override
30-
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
31-
@Nullable Bundle savedInstanceState) {
32-
View contentView = inflater.inflate(R.layout.fragment_test, null);
33-
init(contentView);
34-
return contentView;
35-
}
24+
private ImagePicker imagePicker;
25+
private ImageView imageView;
26+
private CropImageView cropImageView;
3627

37-
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
38-
super.onActivityResult(requestCode, resultCode, data);
39-
imagePicker.onActivityResult(this, requestCode, resultCode, data);
40-
}
41-
42-
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
43-
@NonNull int[] grantResults) {
44-
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
45-
imagePicker.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
46-
}
47-
48-
private void init(View contentView) {
49-
imageView = (ImageView) contentView.findViewById(R.id.imageView);
50-
cropImageView = (CropImageView) contentView.findViewById(R.id.cropImageView);
51-
contentView.setOnClickListener(new View.OnClickListener() {
52-
@Override public void onClick(View v) {
53-
startCameraOrGallery();
54-
}
55-
});
56-
}
57-
58-
private void startCameraOrGallery() {
59-
new AlertDialog.Builder(getActivity()).setTitle("设置头像")
60-
.setItems(new String[] { "选择器(Chooser)", "从相册中选取图片(Gallery)", "拍照(Camera)" }, new DialogInterface.OnClickListener() {
61-
@Override public void onClick(DialogInterface dialog, int which) {
62-
// 回调
63-
ImagePicker.Callback callback = new ImagePicker.Callback() {
64-
@Override public void onPickImage(Uri imageUri) {
65-
}
66-
67-
@Override public void onCropImage(Uri imageUri) {
28+
@Override
29+
public void onCreate(@Nullable Bundle savedInstanceState) {
30+
super.onCreate(savedInstanceState);
31+
imagePicker = new ImagePicker(this, new ImagePicker.Callback() {
32+
@Override
33+
public void onCropImage(Uri imageUri) {
6834
imageView.setImageURI(imageUri);
6935
cropImageView.setImageUriAsync(imageUri);
70-
}
71-
};
72-
if (which == 0) {
73-
imagePicker.startChooser(TestFragment.this, callback);
74-
} else if (which == 1) {
75-
// 从相册中选取图片
76-
imagePicker.startGallery(TestFragment.this, callback);
77-
} else {
78-
// 拍照
79-
imagePicker.startCamera(TestFragment.this, callback);
8036
}
81-
}
82-
})
83-
.show()
84-
.getWindow()
85-
.setGravity(Gravity.BOTTOM);
86-
}
37+
});
38+
}
39+
40+
@Nullable
41+
@Override
42+
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
43+
@Nullable Bundle savedInstanceState) {
44+
View contentView = inflater.inflate(R.layout.fragment_test, null);
45+
init(contentView);
46+
return contentView;
47+
}
48+
49+
private void init(View contentView) {
50+
imageView = (ImageView) contentView.findViewById(R.id.imageView);
51+
cropImageView = (CropImageView) contentView.findViewById(R.id.cropImageView);
52+
contentView.setOnClickListener(new View.OnClickListener() {
53+
@Override
54+
public void onClick(View v) {
55+
startCameraOrGallery();
56+
}
57+
});
58+
}
59+
60+
private void startCameraOrGallery() {
61+
new AlertDialog.Builder(getActivity()).setTitle("设置头像")
62+
.setItems(new String[]{"选择器(Chooser)", "从相册中选取图片(Gallery)", "拍照(Camera)"}, new DialogInterface.OnClickListener() {
63+
@Override
64+
public void onClick(DialogInterface dialog, int which) {
65+
if (which == 0) {
66+
imagePicker.startChooser();
67+
} else if (which == 1) {
68+
// 从相册中选取图片
69+
imagePicker.startGallery();
70+
} else {
71+
// 拍照
72+
imagePicker.startCamera();
73+
}
74+
}
75+
})
76+
.show()
77+
.getWindow()
78+
.setGravity(Gravity.BOTTOM);
79+
}
8780
}

0 commit comments

Comments
 (0)