diff --git a/lib/src/main/java/com/soundcloud/android/crop/Crop.java b/lib/src/main/java/com/soundcloud/android/crop/Crop.java index 564f5b52..0c89b646 100644 --- a/lib/src/main/java/com/soundcloud/android/crop/Crop.java +++ b/lib/src/main/java/com/soundcloud/android/crop/Crop.java @@ -26,6 +26,20 @@ interface Extra { String MAX_X = "max_x"; String MAX_Y = "max_y"; String ERROR = "error"; + String ACTION_BUTTONS_POSITION = "action_buttons_positions"; + } + + public enum ActionButtonsPosition { + TOP("TOP"), BOTTOM("BOTTOM"); + + private final String position; + + ActionButtonsPosition(final String position) { this. position = position; } + + @Override + public String toString() { + return position; + } } private Intent cropIntent; @@ -79,6 +93,17 @@ public Crop withMaxSize(int width, int height) { return this; } + /** + * Set activity action buttons position: top or bottom + * This is optional function, ActionButtonsPosition.TOP is the default position of the buttons + * + * @param pos Enum with values: TOP, BOTTOM + */ + public Crop setActionButtonsPosition(ActionButtonsPosition pos) { + cropIntent.putExtra(Extra.ACTION_BUTTONS_POSITION, pos.toString()); + return this; + } + /** * Send the crop Intent from an Activity * diff --git a/lib/src/main/java/com/soundcloud/android/crop/CropImageActivity.java b/lib/src/main/java/com/soundcloud/android/crop/CropImageActivity.java index 97a0466a..340b8bf4 100644 --- a/lib/src/main/java/com/soundcloud/android/crop/CropImageActivity.java +++ b/lib/src/main/java/com/soundcloud/android/crop/CropImageActivity.java @@ -33,6 +33,8 @@ import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.RelativeLayout; +import android.widget.RelativeLayout.LayoutParams; import java.io.IOException; import java.io.InputStream; @@ -126,6 +128,7 @@ private void loadInput() { maxX = extras.getInt(Crop.Extra.MAX_X); maxY = extras.getInt(Crop.Extra.MAX_Y); saveUri = extras.getParcelable(MediaStore.EXTRA_OUTPUT); + getIntentActionButtonsPosition(extras.getString(Crop.Extra.ACTION_BUTTONS_POSITION)); } sourceUri = intent.getData(); @@ -151,6 +154,48 @@ private void loadInput() { } } + private void getIntentActionButtonsPosition(String pos) { + Crop.ActionButtonsPosition actionButtonsPosition = + pos != null ? Crop.ActionButtonsPosition.valueOf(pos) : null; + + if (actionButtonsPosition != null) { + switch (actionButtonsPosition) { + case TOP: + setActionButtonsPositionOnTop(true); + break; + case BOTTOM: + setActionButtonsPositionOnTop(false); + break; + } + } else { + setActionButtonsPositionOnTop(true); + } + } + + private void setActionButtonsPositionOnTop(boolean onTop) { + final int disabled = 0; + final RelativeLayout actionButtonsLayout = (RelativeLayout) findViewById(R.id.action_buttons_layout); + + final LayoutParams actionButtonsParams = + (RelativeLayout.LayoutParams) actionButtonsLayout.getLayoutParams(); + + final LayoutParams imageViewParams = + (RelativeLayout.LayoutParams) imageView.getLayoutParams(); + + if (onTop) { + actionButtonsParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, disabled); + imageViewParams.addRule(RelativeLayout.ABOVE, disabled); + imageViewParams.addRule(RelativeLayout.BELOW, actionButtonsLayout.getId()); + } else { + actionButtonsParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); + imageViewParams.addRule(RelativeLayout.BELOW, disabled); + imageViewParams.addRule(RelativeLayout.ABOVE, actionButtonsLayout.getId()); + } + + actionButtonsLayout.setLayoutParams(actionButtonsParams); + imageView.setLayoutParams(imageViewParams); + } + private int calculateBitmapSampleSize(Uri bitmapUri) throws IOException { InputStream is = null; BitmapFactory.Options options = new BitmapFactory.Options(); diff --git a/lib/src/main/res/layout/crop__activity_crop.xml b/lib/src/main/res/layout/crop__activity_crop.xml index b42483d5..b6e86bf4 100644 --- a/lib/src/main/res/layout/crop__activity_crop.xml +++ b/lib/src/main/res/layout/crop__activity_crop.xml @@ -5,15 +5,22 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + + + + + android:layout_below="@id/action_buttons_layout" /> \ No newline at end of file