From 8c9bfac2471bdc5fa1c053d41b2e0ef6c05a441f Mon Sep 17 00:00:00 2001 From: Cornette Nicolas Date: Fri, 16 Oct 2015 15:33:18 +0200 Subject: [PATCH 1/2] Add progress on sample app --- .../android/crop/example/MainActivity.java | 15 +++++++++++++++ example/src/main/res/layout/activity_main.xml | 9 +++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java b/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java index 079775aa..5862b0b6 100644 --- a/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java +++ b/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.widget.ImageView; import android.widget.Toast; @@ -16,12 +17,15 @@ public class MainActivity extends Activity { private ImageView resultView; + private View progress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); resultView = (ImageView) findViewById(R.id.result_image); + progress = findViewById(R.id.progress); + hideProgress(); } @Override @@ -33,6 +37,7 @@ public boolean onCreateOptionsMenu(Menu menu) { @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_select) { + showProgress(); resultView.setImageDrawable(null); Crop.pickImage(this); return true; @@ -42,6 +47,7 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override protected void onActivityResult(int requestCode, int resultCode, Intent result) { + hideProgress(); if (requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK) { beginCrop(result.getData()); } else if (requestCode == Crop.REQUEST_CROP) { @@ -50,11 +56,13 @@ protected void onActivityResult(int requestCode, int resultCode, Intent result) } private void beginCrop(Uri source) { + showProgress(); Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped")); Crop.of(source, destination).asSquare().start(this); } private void handleCrop(int resultCode, Intent result) { + hideProgress(); if (resultCode == RESULT_OK) { resultView.setImageURI(Crop.getOutput(result)); } else if (resultCode == Crop.RESULT_ERROR) { @@ -62,4 +70,11 @@ private void handleCrop(int resultCode, Intent result) { } } + private void hideProgress() { + progress.setVisibility(View.INVISIBLE); + } + + private void showProgress() { + progress.setVisibility(View.VISIBLE); + } } diff --git a/example/src/main/res/layout/activity_main.xml b/example/src/main/res/layout/activity_main.xml index 5ebb0cc4..2585c14e 100644 --- a/example/src/main/res/layout/activity_main.xml +++ b/example/src/main/res/layout/activity_main.xml @@ -8,7 +8,12 @@ android:id="@+id/result_image" android:layout_width="match_parent" android:layout_height="match_parent" - android:scaleType="centerInside" - android:background="@drawable/texture" /> + android:scaleType="fitCenter" /> + + From 819173139b7e28e7d55a2271d496563c9310de8c Mon Sep 17 00:00:00 2001 From: Cornette Nicolas Date: Mon, 19 Oct 2015 11:39:09 +0200 Subject: [PATCH 2/2] Improve example app: add photo shoot option --- example/src/main/AndroidManifest.xml | 6 ++ .../android/crop/example/MainActivity.java | 19 ++++++ .../crop/example/SharePhotoProvider.java | 60 +++++++++++++++++++ example/src/main/res/menu/activity_main.xml | 4 ++ example/src/main/res/values/strings.xml | 1 + 5 files changed, 90 insertions(+) create mode 100644 example/src/main/java/com/soundcloud/android/crop/example/SharePhotoProvider.java diff --git a/example/src/main/AndroidManifest.xml b/example/src/main/AndroidManifest.xml index 7428cc23..b2634625 100644 --- a/example/src/main/AndroidManifest.xml +++ b/example/src/main/AndroidManifest.xml @@ -15,8 +15,14 @@ + + + + + diff --git a/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java b/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java index 5862b0b6..905e2026 100644 --- a/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java +++ b/example/src/main/java/com/soundcloud/android/crop/example/MainActivity.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.provider.MediaStore; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -18,6 +19,7 @@ public class MainActivity extends Activity { private ImageView resultView; private View progress; + private int REQUEST_SHOOT = 5015; @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,20 +43,37 @@ public boolean onOptionsItemSelected(MenuItem item) { resultView.setImageDrawable(null); Crop.pickImage(this); return true; + } else if (item.getItemId() == R.id.action_camera) { + showProgress(); + resultView.setImageDrawable(null); + shoot(); + return true; } return super.onOptionsItemSelected(item); } + private void shoot() { + final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, getCaptureUri()); + startActivityForResult(intent, REQUEST_SHOOT); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent result) { hideProgress(); if (requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK) { beginCrop(result.getData()); + } else if (requestCode == REQUEST_SHOOT && resultCode == RESULT_OK) { + beginCrop(getCaptureUri()); } else if (requestCode == Crop.REQUEST_CROP) { handleCrop(resultCode, result); } } + private Uri getCaptureUri() { + return Uri.parse("content://com.soundcloud.android.crop.example.capture/capture.jpg"); + } + private void beginCrop(Uri source) { showProgress(); Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped")); diff --git a/example/src/main/java/com/soundcloud/android/crop/example/SharePhotoProvider.java b/example/src/main/java/com/soundcloud/android/crop/example/SharePhotoProvider.java new file mode 100644 index 00000000..fb62f297 --- /dev/null +++ b/example/src/main/java/com/soundcloud/android/crop/example/SharePhotoProvider.java @@ -0,0 +1,60 @@ +package com.soundcloud.android.crop.example; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; +import android.os.ParcelFileDescriptor; +import android.support.annotation.Nullable; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +public class SharePhotoProvider extends ContentProvider { + + @Override + public boolean onCreate() { + try { + new File(getContext().getCacheDir(), "capture.jpg").createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + return true; + } + + @Nullable + @Override + public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + return ParcelFileDescriptor.open(new File(getContext().getCacheDir(), "capture.jpg"), + ParcelFileDescriptor.MODE_READ_WRITE); + } + + @Nullable + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + return null; + } + + @Nullable + @Override + public String getType(Uri uri) { + return null; + } + + @Nullable + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/example/src/main/res/menu/activity_main.xml b/example/src/main/res/menu/activity_main.xml index ede18fd7..ca444336 100644 --- a/example/src/main/res/menu/activity_main.xml +++ b/example/src/main/res/menu/activity_main.xml @@ -6,4 +6,8 @@ android:title="@string/action_select" android:showAsAction="always" /> + + \ No newline at end of file diff --git a/example/src/main/res/values/strings.xml b/example/src/main/res/values/strings.xml index 7a257821..2d3b8f6e 100644 --- a/example/src/main/res/values/strings.xml +++ b/example/src/main/res/values/strings.xml @@ -2,5 +2,6 @@ Crop Demo Pick + Shoot