From 20ec1c1c0d5399dbb47f5ae8943bb602e8a82048 Mon Sep 17 00:00:00 2001 From: Aman Srivastava Date: Tue, 3 Jan 2017 16:39:48 +0530 Subject: [PATCH] fix rotation issue - add extra TAG for orientation - set rotation --- .../java/nl/changer/polypicker/GalleryFragment.java | 2 +- .../nl/changer/polypicker/ImagePickerActivity.java | 12 ++++++++++-- .../nl/changer/polypicker/utils/ImageWorker.java | 5 ++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/PolyPicker/app/src/main/java/nl/changer/polypicker/GalleryFragment.java b/PolyPicker/app/src/main/java/nl/changer/polypicker/GalleryFragment.java index e916a9b..0161452 100644 --- a/PolyPicker/app/src/main/java/nl/changer/polypicker/GalleryFragment.java +++ b/PolyPicker/app/src/main/java/nl/changer/polypicker/GalleryFragment.java @@ -106,7 +106,7 @@ public View getView(int position, View convertView, ViewGroup parent) { ((FrameLayout) convertView).setForeground(isSelected ? getResources().getDrawable(R.drawable.gallery_photo_selected) : null); if (holder.mImage == null || !holder.mImage.equals(image)) { - mActivity.mImageFetcher.loadImage(image.mUri, holder.mThumbnail); + mActivity.mImageFetcher.loadImage(image.mUri, holder.mThumbnail, image.mOrientation); holder.mImage = image; } return convertView; diff --git a/PolyPicker/app/src/main/java/nl/changer/polypicker/ImagePickerActivity.java b/PolyPicker/app/src/main/java/nl/changer/polypicker/ImagePickerActivity.java index 4182e6c..a030036 100644 --- a/PolyPicker/app/src/main/java/nl/changer/polypicker/ImagePickerActivity.java +++ b/PolyPicker/app/src/main/java/nl/changer/polypicker/ImagePickerActivity.java @@ -47,6 +47,8 @@ public class ImagePickerActivity extends Activity implements ActionBar.TabListen */ public static final String EXTRA_SELECTION_LIMIT = "nl.changer.changer.nl.polypicker.extra.selection_limit"; + public static final String EXTRA_IMAGE_ORIENTATIONS = "nl.changer.changer.nl.polypicker.extra.selected_image_orientations"; + private Set mSelectedImages; private LinearLayout mSelectedImagesContainer; private TextView mSelectedImageEmptyMessage; @@ -135,7 +137,8 @@ public boolean addImage(Image image) { View rootView = LayoutInflater.from(ImagePickerActivity.this).inflate(R.layout.list_item_selected_thumbnail, null); ImageView thumbnail = (ImageView) rootView.findViewById(R.id.selected_photo); rootView.setTag(image.mUri); - mImageFetcher.loadImage(image.mUri, thumbnail); + // mImageFetcher.loadImage(image.mUri, thumbnail); + mImageFetcher.loadImage(image.mUri, thumbnail, image.mOrientation); mSelectedImagesContainer.addView(rootView, 0); int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics()); @@ -182,13 +185,18 @@ public void onClick(View view) { if (view.getId() == R.id.action_btn_done) { Uri[] uris = new Uri[mSelectedImages.size()]; + int[] orientations = new int[mSelectedImages.size()]; + int i = 0; for (Image img : mSelectedImages) { - uris[i++] = img.mUri; + //uris[i++] = img.mUri; + uris[i] = img.mUri; + orientations[i++] = img.mOrientation; } Intent intent = new Intent(); intent.putExtra(EXTRA_IMAGE_URIS, uris); + intent.putExtra(EXTRA_IMAGE_ORIENTATIONS, orientations); setResult(Activity.RESULT_OK, intent); } else if (view.getId() == R.id.action_btn_cancel) { setResult(Activity.RESULT_CANCELED); diff --git a/PolyPicker/app/src/main/java/nl/changer/polypicker/utils/ImageWorker.java b/PolyPicker/app/src/main/java/nl/changer/polypicker/utils/ImageWorker.java index 928f538..18faa66 100644 --- a/PolyPicker/app/src/main/java/nl/changer/polypicker/utils/ImageWorker.java +++ b/PolyPicker/app/src/main/java/nl/changer/polypicker/utils/ImageWorker.java @@ -71,7 +71,8 @@ protected ImageWorker(Context context) { * @param data The URL of the image to download. * @param imageView The ImageView to bind the downloaded image to. */ - public void loadImage(Object data, ImageView imageView) { + // public void loadImage(Object data, ImageView imageView) { + public void loadImage(Object data, ImageView imageView, int orientation) { if (data == null) { return; } @@ -85,12 +86,14 @@ public void loadImage(Object data, ImageView imageView) { if (value != null) { // Bitmap found in memory cache imageView.setImageDrawable(value); + imageView.setRotation(orientation); } else if (cancelPotentialWork(data, imageView)) { //BEGIN_INCLUDE(execute_background_task) final BitmapWorkerTask task = new BitmapWorkerTask(data, imageView); final AsyncDrawable asyncDrawable = new AsyncDrawable(mResources, mLoadingBitmap, task); imageView.setImageDrawable(asyncDrawable); + imageView.setRotation(orientation); // NOTE: This uses a custom version of AsyncTask that has been pulled from the // framework and slightly modified. Refer to the docs at the top of the class