Skip to content

Commit a47e9cd

Browse files
author
sunwei
committed
refact
1 parent b42f93c commit a47e9cd

30 files changed

+701
-1831
lines changed

README-zh.md

Lines changed: 0 additions & 151 deletions
This file was deleted.

README.md

Lines changed: 28 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1,155 +1,50 @@
1-
[中文说明](README-zh.md)
2-
31
# ImageFileSelector
42

5-
[![Build Status](https://travis-ci.org/sw926/ImageFileSelector.svg?branch=master)](https://travis-ci.org/sw926/ImageFileSelector)
6-
7-
##### Use the system software to select, compress, crop images
8-
9-
##### support Android Api Level >= 16
3+
轻量级的选取图片和裁切图片的库,使用系统自带的软件实现。
104

11-
Snapshots of the development version are available in [Sonatype's `snapshots` repository][snap].
5+
支持Android版本 Api Level >= 16
126

13-
How to use
14-
----------
15-
Maven
16-
17-
```xml
18-
<dependency>
19-
<groupId>com.sw926.imagefileselector</groupId>
20-
<artifactId>library</artifactId>
21-
<version>1.1.0-SNAPSHOT</version>
22-
</dependency>
23-
```
24-
Gradle
7+
## 使用方法
258

269
```gradle
27-
compile 'com.sw926.imagefileselector:library:1.1.0-SNAPSHOT'
10+
compile 'com.sw926.imagefileselector:library:2.0.0'
2811
```
2912

30-
31-
Select Image
32-
----------
33-
Init
13+
在 Activity 或者 Fragment Start 之前进行初始化:
3414

3515
``` java
36-
ImageFileSelector mImageFileSelector = new ImageFileSelector(this);
37-
mImageFileSelector.setCallback(new ImageFileSelector.Callback() {
16+
mImageFileSelector = new ImageFileSelector(this);
17+
mImageFileSelector.setOutPutImageSize(w, h);
18+
mImageFileSelector.setQuality(80);
19+
mImageFileSelector.setListener(new ImageFileResultListener() {
3820
@Override
39-
public void onError(@NotNull ErrorResult errorResult) {
40-
switch (errorResult) {
41-
case permissionDenied:
42-
break;
43-
case canceled:
44-
break;
45-
case error:
46-
break;
47-
}
21+
public void onSuccess(@NonNull String filePath) {
22+
loadImage(filePath);
23+
mCurrentSelectFile = new File(filePath);
24+
mBtnCrop.setVisibility(View.VISIBLE);
4825
}
4926

5027
@Override
51-
public void onSuccess(@NotNull String file) {
28+
public void onCancel() {
29+
Toast.makeText(ExampleActivity.this, "Canceled", Toast.LENGTH_LONG).show();
5230
}
53-
});
54-
```
55-
Add code to you Activity or Fragment
56-
```java
57-
@Override
58-
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
59-
super.onActivityResult(requestCode, resultCode, data);
60-
mImageFileSelector.onActivityResult(this, requestCode, resultCode, data);
61-
}
62-
63-
@Override
64-
protected void onSaveInstanceState(Bundle outState) {
65-
super.onSaveInstanceState(outState);
66-
mImageFileSelector.onSaveInstanceState(outState);
67-
}
68-
69-
@Override
70-
protected void onRestoreInstanceState(Bundle savedInstanceState) {
71-
super.onRestoreInstanceState(savedInstanceState);
72-
mImageFileSelector.onRestoreInstanceState(savedInstanceState);
73-
}
7431

75-
@Override
76-
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
77-
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
78-
mImageFileSelector.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
79-
}
80-
```
81-
Setting parameters
82-
```java
83-
// Set the output file size
84-
mImageFileSelector.setOutPutImageSize(800, 600);
85-
Set the picture save quality, 0 to 100
86-
mImageFileSelector.setQuality(80);
87-
```
88-
Start select image
89-
```java
90-
// take picture from camera
91-
mImageFileSelector.takePhoto(this, requestCode);
92-
// select image from sdcard
93-
mImageFileSelector.selectImage(this, requestCode);
94-
// Set the save path of the image,default: /sdcard/Android/data/{packagename}/cache/images/
95-
mImageFileSelector.setOutPutPath();
32+
@Override
33+
public void onError() {
34+
Toast.makeText(ExampleActivity.this, "Unknown Error", Toast.LENGTH_LONG).show();
35+
}
36+
});
9637
```
9738

39+
在选择图片的地方调用:
9840

99-
Crop Image
100-
----------
101-
Init
102-
```java
103-
ImageCropper mImageCropper = new ImageCropper();
104-
mImageCropper.setCallback(new ImageCropper.ImageCropperCallback() {
105-
@Override
106-
public void onError(@NotNull ImageCropper.CropperErrorResult result) {
107-
switch (result) {
108-
case error:
109-
break;
110-
case canceled:
111-
break;
112-
case notSupport:
113-
break;
114-
}
115-
}
116-
117-
@Override
118-
public void onSuccess(@NotNull String outputFile) {
119-
}
120-
});
41+
``` java
42+
mImageFileSelector.takePhoto();
43+
// 或者
44+
mImageFileSelector.selectImage();
12145
```
122-
Add code to you Activity or Fragment
123-
```java
124-
@Override
125-
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
126-
super.onActivityResult(requestCode, resultCode, data);
127-
mImageCropper.onActivityResult(requestCode, resultCode, data);
128-
}
12946

130-
@Override
131-
protected void onSaveInstanceState(Bundle outState) {
132-
super.onSaveInstanceState(outState);
133-
mImageCropper.onSaveInstanceState(outState);
134-
}
47+
## 说明
13548

136-
@Override
137-
protected void onRestoreInstanceState(Bundle savedInstanceState) {
138-
super.onRestoreInstanceState(savedInstanceState);
139-
mImageCropper.onRestoreInstanceState(savedInstanceState);
140-
}
141-
```
142-
Setting parameters
143-
```java
144-
// Sets the picture aspect ratio
145-
mImageCropper.setOutPutAspect(1, 1);
146-
// Sets the image size
147-
mImageCropper.setOutPut(800, 800);
148-
// Sets whether to scale
149-
mImageCropper.setScale(true);
150-
```
151-
crop image
152-
```java
153-
mImageCropper.cropImage(file);
154-
```
155-
[snap]: https://oss.sonatype.org/content/repositories/snapshots/com/sw926/imagefileselector/library/
49+
在 appcompat 支持 ActivityResultLauncher 后,选择图片已经非常简单,这个项目只是做了简单的封装,添加了拍照和图片压缩。选择图片不需要任何权限,如果 App 的 `AndroidManifest.xml` 没有添加 `<uses-permission android:name="android.permission.CAMERA" />`
50+
,拍照也不需要申请权限。

app/build.gradle

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ apply plugin: 'com.android.application'
22
apply plugin: 'kotlin-android'
33

44
android {
5-
compileSdkVersion 30
6-
buildToolsVersion '30.0.2'
5+
compileSdkVersion 31
76

87
defaultConfig {
98
applicationId "com.sw926.imagefileselector.example"
109
minSdkVersion 16
11-
targetSdkVersion 30
10+
targetSdkVersion 31
1211
versionCode 10
1312
versionName "1.0.7"
1413
}
@@ -26,9 +25,9 @@ android {
2625

2726
dependencies {
2827
implementation fileTree(include: ['*.jar'], dir: 'libs')
29-
testImplementation 'junit:junit:4.13.1'
28+
testImplementation 'junit:junit:4.13.2'
3029
implementation project(':library')
31-
implementation 'androidx.appcompat:appcompat:1.2.0'
30+
implementation 'androidx.appcompat:appcompat:1.3.1'
3231
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
3332
}
3433
repositories {

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="com.sw926.imagefileselector.example">
44

5-
<uses-permission android:name="android.permission.CAMERA"/>
65

76
<application
87
android:allowBackup="false"
@@ -14,7 +13,9 @@
1413
android:configChanges="keyboardHidden"
1514
android:label="From Activity"
1615
android:windowSoftInputMode="stateHidden" />
17-
<activity android:name=".LaunchActivity">
16+
<activity
17+
android:name=".LaunchActivity"
18+
android:exported="true">
1819
<intent-filter>
1920
<action android:name="android.intent.action.MAIN" />
2021

0 commit comments

Comments
 (0)