diff --git a/app/src/main/java/com/bourke/glimmr/activities/PhotoUploadActivity.java b/app/src/main/java/com/bourke/glimmr/activities/PhotoUploadActivity.java index 5f67c06..ad96a4c 100644 --- a/app/src/main/java/com/bourke/glimmr/activities/PhotoUploadActivity.java +++ b/app/src/main/java/com/bourke/glimmr/activities/PhotoUploadActivity.java @@ -3,7 +3,9 @@ import com.bourke.glimmr.BuildConfig; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -186,14 +188,24 @@ public static ImageFragment newInstance(String imageUri) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - ImageView image = new ImageView(getActivity()); + final ImageView image = new ImageView(getActivity()); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); image.setLayoutParams(layoutParams); image.setScaleType(ImageView.ScaleType.CENTER_CROP); - image.setImageBitmap(BitmapFactory.decodeFile(mImageUri)); + new AsyncTask() { + @Override + protected Bitmap doInBackground(Void... args) { + return BitmapFactory.decodeFile(mImageUri); + } + + @Override + protected void onPostExecute(Bitmap bitmap) { + image.setImageBitmap(bitmap); + } + }.execute(); LinearLayout layout = new LinearLayout(getActivity()); layout.addView(image); diff --git a/app/src/main/java/com/bourke/glimmr/fragments/upload/LocalPhotosGridFragment.java b/app/src/main/java/com/bourke/glimmr/fragments/upload/LocalPhotosGridFragment.java index 61058c5..89cb0a4 100644 --- a/app/src/main/java/com/bourke/glimmr/fragments/upload/LocalPhotosGridFragment.java +++ b/app/src/main/java/com/bourke/glimmr/fragments/upload/LocalPhotosGridFragment.java @@ -7,6 +7,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; +import android.os.AsyncTask; import android.provider.MediaStore; import android.support.v4.widget.CursorAdapter; import android.util.Log; @@ -240,7 +241,7 @@ public MediaStoreImagesAdapter(Context context, int layout, Cursor c, @Override public View getView(final int position, View convertView, ViewGroup parent) { - ViewHolder holder; + final ViewHolder holder; if (convertView == null) { convertView = mActivity.getLayoutInflater().inflate( R.layout.gridview_item, null); @@ -271,12 +272,20 @@ public View getView(final int position, View convertView, null); Cursor thumbCursor = thumbCursorLoader.loadInBackground(); - Bitmap myBitmap = null; if(thumbCursor.moveToFirst()){ int thCulumnIndex = thumbCursor.getColumnIndex(THUMB_DATA); - String thumbPath = thumbCursor.getString(thCulumnIndex); - myBitmap = BitmapFactory.decodeFile(thumbPath); - holder.image.setImageBitmap(myBitmap); + final String thumbPath = thumbCursor.getString(thCulumnIndex); + new AsyncTask() { + @Override + protected Bitmap doInBackground(Void... args) { + return BitmapFactory.decodeFile(thumbPath); + } + + @Override + protected void onPostExecute(Bitmap myBitmap) { + holder.image.setImageBitmap(myBitmap); + } + }.execute(); } /* Set tint on selected items */ diff --git a/app/src/main/java/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java b/app/src/main/java/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java index 0594384..4d30321 100644 --- a/app/src/main/java/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java +++ b/app/src/main/java/com/bourke/glimmr/fragments/viewer/PhotoViewerFragment.java @@ -6,6 +6,7 @@ import android.graphics.Bitmap; import android.media.MediaScannerConnection; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.util.Log; @@ -444,15 +445,25 @@ private void saveImageToExternalStorage() { String url = getLargestUrlAvailable(mBasePhoto); new DownloadPhotoTask(mActivity, new Events.IPhotoDownloadedListener() { @Override - public void onPhotoDownloaded(Bitmap bitmap, Exception e) { - String filename = mBasePhoto.getTitle() + ".jpg"; - if (e == null && createExternalStoragePublicPicture(bitmap, filename) != null) { - Toast.makeText(mActivity, getString(R.string.image_saved), Toast.LENGTH_SHORT) - .show(); - } else { - Toast.makeText(mActivity, getString(R.string.storage_error), Toast.LENGTH_SHORT) - .show(); - } + public void onPhotoDownloaded(final Bitmap bitmap, final Exception e) { + final String filename = mBasePhoto.getTitle() + ".jpg"; + new AsyncTask() { + @Override + protected File doInBackground(Void... args) { + return createExternalStoragePublicPicture(bitmap, filename); + } + + @Override + protected void onPostExecute(File file) { + if (e == null && file != null) { + Toast.makeText(mActivity, getString(R.string.image_saved), Toast.LENGTH_SHORT) + .show(); + } else { + Toast.makeText(mActivity, getString(R.string.storage_error), Toast.LENGTH_SHORT) + .show(); + } + } + }.execute(); } }, url).execute(); }