Skip to content

Commit 9530654

Browse files
committed
android wxphoto library
0 parents  commit 9530654

File tree

96 files changed

+4325
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+4325
-0
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.gradle
2+
/local.properties
3+
/.idea/workspace.xml
4+
/.idea/libraries
5+
.DS_Store
6+
/build
7+
/captures
8+
/.idea/

PhotoPicker.iml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id="PhotoPicker" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="java-gradle" name="Java-Gradle">
5+
<configuration>
6+
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
7+
<option name="BUILDABLE" value="false" />
8+
configuration>
9+
facet>
10+
component>
11+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
12+
<exclude-output />
13+
<content url="file://$MODULE_DIR$">
14+
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
15+
content>
16+
<orderEntry type="inheritedJdk" />
17+
<orderEntry type="sourceFolder" forTests="false" />
18+
component>
19+
module>

README.md

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
# PhotoPicker
2+
3+
基于 [donglua/PhotoPicker](https://github.com/donglua/PhotoPicker)[lovetuzitong/MultiImageSelector](https://github.com/lovetuzitong/MultiImageSelector) 修改的一个图片选择类库。
4+
5+
## Gradle
6+
7+
compile 'com.foamtrace:photopicker:1.0'
8+
9+
## 效果图
10+
![](renderings/image_01.png)
11+
![](renderings/image_02.png)
12+
![](renderings/image_03.png)
13+
![](renderings/image_04.png)
14+
15+
## 使用方法
16+
17+
### ImageConfig
18+
可选属性, 用于过滤照片列表信息。
19+
20+
```java
21+
ImageConfig config = new ImageConfig();
22+
config.minHeight = 400;
23+
config.minWidth = 400;
24+
config.mimeType = new String[]{"image/jpeg", "image/png"}; // 图片类型 image/gif ...
25+
config.minSize = 1 * 1024 * 1024; // 1Mb 图片大小
26+
```
27+
28+
### 单选
29+
30+
```java
31+
PhotoPickerIntent intent = new PhotoPickerIntent(MainActivity.this);
32+
intent.setSelectModel(SelectModel.SINGLE);
33+
intent.setShowCarema(true); // 是否显示拍照, 默认false
34+
// intent.setImageConfig(config);
35+
startActivityForResult(intent, REQUEST_CAMERA_CODE);
36+
```
37+
38+
### 多选
39+
40+
```java
41+
PhotoPickerIntent intent = new PhotoPickerIntent(MainActivity.this);
42+
intent.setSelectModel(SelectModel.MULTI);
43+
intent.setShowCarema(true); // 是否显示拍照, 默认false
44+
intent.setMaxTotal(9); // 最多选择照片数量,默认为9
45+
intent.setSelectedPaths(imagePaths); // 已选中的照片地址, 用于回显选中状态
46+
// intent.setImageConfig(config);
47+
startActivityForResult(intent, REQUEST_CAMERA_CODE);
48+
```
49+
50+
### 拍照
51+
52+
```java
53+
54+
private ImageCaptureManager captureManager;
55+
56+
btnCarema.setOnClickListener(new View.OnClickListener() {
57+
@Override
58+
public void onClick(View v) {
59+
try {
60+
if(captureManager == null){
61+
captureManager = new ImageCaptureManager(MainActivity.this);
62+
}
63+
Intent intent = captureManager.dispatchTakePictureIntent();
64+
startActivityForResult(intent, ImageCaptureManager.REQUEST_TAKE_PHOTO);
65+
} catch (IOException e) {
66+
Toast.makeText(MainActivity.this, R.string.msg_no_camera, Toast.LENGTH_SHORT).show();
67+
e.printStackTrace();
68+
}
69+
}
70+
});
71+
```
72+
73+
### 预览
74+
75+
```java
76+
PhotoPreviewIntent intent = new PhotoPreviewIntent(MainActivity.this);
77+
intent.setCurrentItem(position); // 当前选中照片的下标
78+
intent.setPhotoPaths(imagePaths); // 已选中的照片地址
79+
startActivityForResult(intent, REQUEST_PREVIEW_CODE);
80+
```
81+
82+
### ActivityResult
83+
84+
```java
85+
@Override
86+
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
87+
super.onActivityResult(requestCode, resultCode, data);
88+
if(resultCode == RESULT_OK) {
89+
switch (requestCode) {
90+
// 选择照片
91+
case REQUEST_CAMERA_CODE:
92+
refreshAdpater(data.getStringArrayListExtra(PhotoPickerActivity.EXTRA_RESULT));
93+
break;
94+
// 拍照
95+
case ImageCaptureManager.REQUEST_TAKE_PHOTO:
96+
if(captureManager.getCurrentPhotoPath() != null) {
97+
captureManager.galleryAddPic();
98+
// 照片地址
99+
String imagePaht = captureManager.getCurrentPhotoPath();
100+
// ...
101+
}
102+
break;
103+
// 预览
104+
case REQUEST_PREVIEW_CODE:
105+
refreshAdpater(data.getStringArrayListExtra(PhotoPreviewActivity.EXTRA_RESULT));
106+
break;
107+
}
108+
}
109+
}
110+
111+
private void refreshAdpater(ArrayList<String> paths){
112+
// 处理返回照片地址
113+
}
114+
```
115+
116+
## 配置信息
117+
118+
### style.xml
119+
120+
```xml
121+
122+
<style name="ActionMenuTextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Menu">
123+
<item name="android:textSize">@dimen/action_text_sizeitem>
124+
<item name="android:textStyle">normalitem>
125+
style>
126+
127+
<style name="actionBarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
128+
style>
129+
130+
<style name="actionBarPopupTheme" parent="ThemeOverlay.AppCompat.Light">
131+
style>
132+
133+
<style name="PhotoPickerTheme" parent="Theme.AppCompat.Light.DarkActionBar">
134+
<item name="windowActionBar">falseitem>
135+
<item name="windowNoTitle">trueitem>
136+
<item name="android:windowBackground">@color/photopicker_backgrounditem>
137+
<item name="actionMenuTextAppearance">@style/ActionMenuTextStyleitem>
138+
139+
140+
style>
141+
```
142+
143+
### AndroidManifest.xml
144+
145+
```xml
146+
<activity
147+
android:name="com.foamtrace.photopicker.PhotoPickerActivity"
148+
android:theme="@style/PhotoPickerTheme"
149+
android:configChanges="orientation|screenSize"/>
150+
151+
<activity android:name="com.foamtrace.photopicker.PhotoPreviewActivity"
152+
android:theme="@style/PhotoPickerTheme"/>
153+
```

ReleaseNotes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
## 1.0

app/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

app/app.iml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
xml version="1.0" encoding="UTF-8"?>
2+
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="PhotoPicker" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
3+
<component name="FacetManager">
4+
<facet type="android-gradle" name="Android-Gradle">
5+
<configuration>
6+
<option name="GRADLE_PROJECT_PATH" value=":app" />
7+
configuration>
8+
facet>
9+
<facet type="android" name="Android">
10+
<configuration>
11+
<option name="SELECTED_BUILD_VARIANT" value="debug" />
12+
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
13+
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
14+
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
15+
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
16+
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
17+
<afterSyncTasks>
18+
<task>generateDebugAndroidTestSourcestask>
19+
<task>generateDebugSourcestask>
20+
afterSyncTasks>
21+
<option name="ALLOW_USER_CONFIGURATION" value="false" />
22+
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
23+
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
24+
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
25+
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
26+
configuration>
27+
facet>
28+
component>
29+
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
30+
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
31+
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
32+
<exclude-output />
33+
<content url="file://$MODULE_DIR$">
34+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
35+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
36+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
37+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
38+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
39+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
40+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
41+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
42+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
43+
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
44+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
45+
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
46+
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
47+
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
48+
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
49+
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
50+
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
51+
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
52+
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
53+
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
54+
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
55+
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
56+
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
57+
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
58+
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
59+
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
60+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
61+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
62+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
63+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
64+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
65+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
66+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
67+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
68+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
69+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/debug" />
70+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
71+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
72+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.1/jars" />
73+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/jars" />
74+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.github.chrisbanes.photoview/library/1.2.4/jars" />
75+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
76+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
77+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
78+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
80+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
83+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
84+
content>
85+
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
86+
<orderEntry type="sourceFolder" forTests="false" />
87+
<orderEntry type="library" exported="" name="support-v4-23.1.1" level="project" />
88+
<orderEntry type="library" exported="" name="library-1.2.4" level="project" />
89+
<orderEntry type="library" exported="" name="support-annotations-23.1.1" level="project" />
90+
<orderEntry type="library" exported="" name="glide-3.6.1" level="project" />
91+
<orderEntry type="library" exported="" name="appcompat-v7-23.1.1" level="project" />
92+
<orderEntry type="module" module-name="wxphoto" exported="" />
93+
component>
94+
module>

app/build.gradle

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
apply plugin: 'com.android.application'
2+
3+
repositories {
4+
mavenCentral()
5+
flatDir {
6+
dirs 'libs'
7+
}
8+
}
9+
10+
android {
11+
compileSdkVersion 23
12+
buildToolsVersion '23.0.3'
13+
14+
defaultConfig {
15+
applicationId "com.foamtrace.photopickersample"
16+
minSdkVersion 11
17+
targetSdkVersion 23
18+
versionCode 1
19+
versionName "1.0"
20+
}
21+
buildTypes {
22+
release {
23+
minifyEnabled false
24+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
25+
}
26+
}
27+
}
28+
29+
dependencies {
30+
compile fileTree(dir: 'libs', include: ['*.jar'])
31+
compile 'com.android.support:appcompat-v7:23.1.1'
32+
// compile(name:'wxphoto-debug', ext:'aar')
33+
compile project(':wxphoto')
34+
compile 'com.github.bumptech.glide:glide:3.6.1'
35+
compile 'com.github.chrisbanes.photoview:library:+'
36+
}

app/libs/wxphoto-debug.aar

75.5 KB
Binary file not shown.

app/libs/wxphoto.aar

75.5 KB
Binary file not shown.

app/proguard-rules.pro

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Add project specific ProGuard rules here.
2+
# By default, the flags in this file are appended to flags specified
3+
# in D:\DevSofrware\Android\sdk/tools/proguard/proguard-android.txt
4+
# You can edit the include path and order by changing the proguardFiles
5+
# directive in build.gradle.
6+
#
7+
# For more details, see
8+
# http://developer.android.com/guide/developing/tools/proguard.html
9+
10+
# Add any project specific keep options here:
11+
12+
# If your project uses WebView with JS, uncomment the following
13+
# and specify the fully qualified class name to the JavaScript interface
14+
# class:
15+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16+
# public *;
17+
#}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.foamtrace.photopicker;
2+
3+
import android.app.Application;
4+
import android.test.ApplicationTestCase;
5+
6+
/**
7+
8+
*/
9+
public class ApplicationTest extends ApplicationTestCase<Application> {
10+
public ApplicationTest() {
11+
super(Application.class);
12+
}
13+
}

app/src/main/AndroidManifest.xml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
package="com.foamtrace.photopickersample" >
4+
5+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
6+
<uses-permission android:name="android.permission.INTERNET" />
7+
8+
<application
9+
android:allowBackup="true"
10+
android:icon="@mipmap/ic_launcher"
11+
android:label="@string/app_name"
12+
android:theme="@style/AppTheme" >
13+
<activity
14+
android:name="com.foamtrace.photopickersample.MainActivity"
15+
android:label="@string/app_name"
16+
android:screenOrientation="portrait">
17+
<intent-filter>
18+
<action android:name="android.intent.action.MAIN" />
19+
20+
<category android:name="android.intent.category.LAUNCHER" />
21+
intent-filter>
22+
activity>
23+
24+
<activity
25+
android:name="uuke.xinfu.wxphoto.PhotoPickerActivity"
26+
android:theme="@style/PhotoPickerTheme"
27+
android:configChanges="orientation|screenSize"/>
28+
<activity android:name="uuke.xinfu.wxphoto.PhotoPreviewActivity"
29+
android:theme="@style/PhotoPickerTheme"/>
30+
31+
<activity android:name="uuke.xinfu.wxphoto.VideoPickerActivity"
32+
android:theme="@style/PhotoPickerTheme"
33+
android:configChanges="orientation|screenSize"/>
34+
<activity android:name="uuke.xinfu.wxphoto.VideoPreviewActivity"
35+
android:theme="@style/PhotoPickerTheme"
36+
android:configChanges="orientation|screenSize"/>
37+
<activity android:name="uuke.xinfu.wxphoto.TestActivity"
38+
android:theme="@style/PhotoPickerTheme"/>
39+
40+
application>
41+
42+
manifest>

0 commit comments

Comments
 (0)