## [TakePhoto](https://github.com/crazycodeboy/TakePhoto) 简介
[![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen.svg)](https://github.com/crazycodeboy/TakePhoto/pulls)
[![Download](https://api.bintray.com/packages/crazycodeboy/maven/TakePhoto/images/download.svg) ](https://bintray.com/crazycodeboy/maven/TakePhoto/_latestVersion)
[![GitHub release](https://img.shields.io/github/release/crazycodeboy/TakePhoto.svg?maxAge=2592000?style=flat-square)](https://github.com/crazycodeboy/TakePhoto/releases)
[![License Apache2.0](http://img.shields.io/badge/license-Apache2.0-brightgreen.svg?style=flat)](https://raw.githubusercontent.com/crazycodeboy/TakePhoto/master/LICENSE)
`TakePhoto`是一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库,目前最新版本[4.1.0](https://github.com/crazycodeboy/TakePhoto/)。
3.0以下版本及API说明,详见[TakePhoto2.0+](https://github.com/crazycodeboy/TakePhoto/blob/master/README.2+.md)。
>TakePhoto交流平台:QQ群:556387607(群1,未满)
**V4.0**
- 支持通过相机拍照获取图片
- 支持从相册选择图片
- 支持从文件选择图片
- 支持批量图片选取
- 支持图片压缩以及批量图片压缩
- 支持图片裁切以及批量图片裁切
- 支持照片旋转角度自动纠正
- 支持自动权限管理(无需关心SD卡及摄像头权限等问题)
- 支持对裁剪及压缩参数个性化配置
- 提供自带裁剪工具(可选)
- 支持智能选取及裁剪异常处理
- 支持因拍照Activity被回收后的自动恢复
- 支持Android8.1
- +支持多种压缩工具
- +支持多种图片选择工具
GitHub地址: [https://github.com/crazycodeboy/TakePhoto](https://github.com/crazycodeboy/TakePhoto)
## 目录
- [安装说明](#安装说明)
- [演示](#演示)
- [使用说明](#使用说明)
- [自定义UI](#自定义ui)
- [API](#api)
- [兼容性](#兼容性)
- [贡献](#贡献)
- [更新说明](#更新说明)
- [最后](#混淆)
## 安装说明
**Gradle:**
```groovy
compile 'com.jph.takephoto:takephoto_library:4.1.0'
```
**Maven:**
```groovy
<dependency>
<groupId>com.jph.takephoto</groupId>
<artifactId>takephoto_library</artifactId>
<version>4.1.0</version>
<type>pom</type>
</dependency>
```
## 演示
运行效果图:
![预览图](https://raw.githubusercontent.com/crazycodeboy/TakePhoto/master/Screenshots/takephoto_preview.png)
![运行效果图](https://raw.githubusercontent.com/crazycodeboy/TakePhoto/master/Screenshots/%E9%A2%84%E8%A7%88%E5%9B%BE.jpg)
## 使用说明
### 使用TakePhoto有以下两种方式:
**方式一:通过继承的方式**
1. 继承`TakePhotoActivity`、`TakePhotoFragmentActivity`、`TakePhotoFragment`三者之一。
2. 通过`getTakePhoto()`获取`TakePhoto`实例进行相关操作。
3. 重写以下方法获取结果
```java
void takeSuccess(TResult result);
void takeFail(TResult result,String msg);
void takeCancel();
```
此方式使用简单,满足的大部分的使用需求,具体使用详见[simple](https://github.com/crazycodeboy/TakePhoto/blob/master/simple/src/main/java/com/jph/simple/SimpleActivity.java)。如果通过继承的方式无法满足实际项目的使用,可以通过下面介绍的方式。
**方式二:通过组装的方式**
可参照:[TakePhotoActivity](https://github.com/crazycodeboy/TakePhoto/blob/master/takephoto_library/src/main/java/com/jph/takephoto/app/TakePhotoActivity.java),以下为主要步骤:
1.实现`TakePhoto.TakeResultListener,InvokeListener`接口。
2.在 `onCreate`,`onActivityResult`,`onSaveInstanceState`方法中调用TakePhoto对用的方法。
3.重写`onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)`,添加如下代码。
```java
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//以下代码为处理Android6.0、7.0动态权限所需
TPermissionType type=PermissionManager.onRequestPermissionsResult(requestCode,permissions,grantResults);
PermissionManager.handlePermissionsResult(this,type,invokeParam,this);
}
```
4.重写`TPermissionType invoke(InvokeParam invokeParam)`方法,添加如下代码:
```java
@Override
public TPermissionType invoke(InvokeParam invokeParam) {
TPermissionType type=PermissionManager.checkPermission(TContextWrap.of(this),invokeParam.getMethod());
if(TPermissionType.WAIT.equals(type)){
this.invokeParam=invokeParam;
}
return type;
}
```
5.添加如下代码获取TakePhoto实例:
```java
/**
* 获取TakePhoto实例
* @return
*/
public TakePhoto getTakePhoto(){
if (takePhoto==null){
takePhoto= (TakePhoto) TakePhotoInvocationHandler.of(this).bind(new TakePhotoImpl(this,this));
}
return takePhoto;
}
```
## 自定义UI
TakePhoto不仅支持对相关参数的自定义,也支持对UI的自定义,下面就像大家介绍如何自定义TakePhoto的相册与裁剪工具的UI。
### 自定义相册
如果TakePhoto自带相册的UI不符合你应用的主题的话,你可以对它进行自定义。方法如下:
#### 自定义Toolbar
在“res/layout”目录中创建一个名为“toolbar.xml”的布局文件,内容如下:
```xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/CustomToolbarTheme"
android:background="#ffa352">
</android.support.v7.widget.Toolbar>
```
在“toolbar.xml”文件中你可以指定TakePhoto自带相册的主题以及Toolbar的背景色。
#### 自定义状态栏
在“res/values”目录中创建一个名为“colors.xml”的资源文件,内容如下:
```xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="multiple_image_select_primaryDark">#212121</color>
</resources>
```
通过上述方式便可以自定义状态栏的颜色。
#### 自定义提示文字
在“res/values”目录的“string.xml”文件冲添加如下代码:
```xml
<resources>
<string name="album_view">选择图片</string>
<string name="image_view">单击选择</string>
<string name="add">确定</string>
<string name="selected">已选</string>
<string name="limit_exceeded">最多能选 %d 张</string>
</resources>
```
重写上述代码,便可以自定义TakePhoto自带相册的提示文字。
### 自定义裁切工具
在“res/layout”目录中创建一个名为“crop__activity_crop.xml”与“crop__layout_done_cancel.xml”的布局文件,内容如下:
**crop__activity_crop.xml**
```xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.soundcloud.android.crop.CropImageView
android:id="@+id/crop_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:background="@drawable/crop__texture"
android:layout_above="@+id/done_cancel_bar" />
<include
android:id="@+id/done_cancel_bar"
android:layout_alignParentBottom="true"
layout="@layout/crop__layout_done_cancel"
android:layout_height="50dp"
android:layout_width="match_parent" />
</RelativeLayout>
```
**crop__layout_done_cancel.xml**
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/C
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
TakePhoto-master.zip (82个子文件)
TakePhoto-master
.gitignore 1KB
gradle
wrapper
gradle-wrapper.jar 49KB
gradle-wrapper.properties 230B
Screenshots
兼容性测试.jpg 184KB
预览图.jpg 462KB
takephoto_preview.png 603KB
takephoto_library
.gitignore 1KB
build.gradle 702B
proguard-rules.pro 1KB
src
main
AndroidManifest.xml 847B
java
org
devio
takephoto
permission
PermissionManager.java 6KB
InvokeListener.java 225B
TakePhotoInvocationHandler.java 1KB
uitl
TUriParse.java 6KB
ImageRotateUtil.java 3KB
TConstant.java 1KB
TImageFiles.java 5KB
TUtils.java 9KB
TFileUtils.java 1KB
IntentUtils.java 3KB
app
TakePhotoFragmentActivity.java 3KB
TakePhotoFragment.java 3KB
TakePhoto.java 4KB
TakePhotoImpl.java 21KB
TakePhotoActivity.java 3KB
model
TContextWrap.java 994B
TException.java 401B
TResult.java 1005B
MultipleCrop.java 3KB
TIntentWap.java 674B
LubanOptions.java 2KB
TImage.java 2KB
TExceptionType.java 724B
CropOptions.java 2KB
TakePhotoOptions.java 2KB
InvokeParam.java 790B
compress
CompressImage.java 710B
CompressConfig.java 3KB
CompressImageImpl.java 3KB
CompressImageUtil.java 7KB
CompressWithLuBan.java 4KB
res
values
strings.xml 1KB
dimens.xml 211B
values-en
strings.xml 1KB
xml
file_paths.xml 163B
values-w820dp
dimens.xml 358B
androidTest
java
org
devio
takephoto
ApplicationTest.java 350B
README.md 18KB
simple
.gitignore 1KB
simple-debug.apk 1.69MB
build.gradle 570B
proguard-rules.pro 798B
src
main
AndroidManifest.xml 1KB
java
org
devio
simple
SimpleFragment.java 2KB
CustomHelper.java 7KB
MainActivity.java 1KB
ResultActivity.java 2KB
SimpleActivity.java 2KB
SimpleFragmentActivity.java 1KB
res
values
styles.xml 194B
strings.xml 179B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 8KB
layout
common_layout.xml 23KB
image_show.xml 976B
activity_main_layout.xml 1KB
activity_result_layout.xml 537B
simple_fragment_layout.xml 460B
mipmap-xhdpi
ic_launcher.png 5KB
mipmap-hdpi
ic_launcher.png 3KB
mipmap-mdpi
ic_launcher.png 2KB
menu
menu_main.xml 361B
values-w820dp
dimens.xml 358B
androidTest
java
org
devio
simple
ApplicationTest.java 347B
build.gradle 619B
gradlew.bat 2KB
gradlew 5KB
LICENSE 11KB
README -V1.0+.md 4KB
README.2+.md 8KB
gradle.properties 855B
settings.gradle 40B
共 82 条
- 1
资源评论
- FallingSand2019-11-06方便,感谢楼主
zhou2002
- 粉丝: 12
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功