一、集成
compile 'com.jph.takephoto:takephoto_library:4.0.3'
二、Activity集成開源類並重寫3個方法
public class TestActivity extends TakePhotoActivity {
private TextView tv;
private ImageView img;
private Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo);
//設置一個裁剪後圖片的存儲位置
File file = new File(Environment.getExternalStorageDirectory(), "/temp/" + System.currentTimeMillis() + ".jpg");
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
imageUri = Uri.fromFile(file);
//綁定視圖
tv=findViewById(R.id.textView);
img=findViewById(R.id.imageView);
//獲取一張圖片不裁剪
//getTakePhoto().onPickFromGallery();
//獲取一張圖片並裁剪
CropOptions cropOptions=new CropOptions.Builder().setAspectX(1).setAspectY(1).setOutputX(50).setOutputY(50).setWithOwnCrop(true).create();
getTakePhoto().onPickFromGalleryWithCrop(imageUri,cropOptions);
}
//重寫3個方法:成功後操作、失敗、取消,其實一般重寫takesuccess就行了。
@Override
public void takeSuccess(TResult result) {
super.takeSuccess(result);
// Log.e("success",""+result.getImage().getOriginalPath().toString());
//成功後將圖片地址和圖片顯示到控件上
tv.setText(result.getImage().getOriginalPath().toString());
Glide.with(this).load(new File(result.getImage().getOriginalPath())).into(img);
}
@Override
public void takeFail(TResult result, String msg) {
super.takeFail(result, msg);
}
@Override
public void takeCancel() {
super.takeCancel();
}
}
三、效果
PS:上面的activity直接調用了打開相冊選擇圖片的方法,也可以用一個按鈕來觸發這個操作
開源鏈接裏面有詳細的說明