From 97ae47bc5d3f78f93ac3bfd66a7d39c981655844 Mon Sep 17 00:00:00 2001 From: stom79 Date: Sat, 23 Dec 2017 19:31:12 +0100 Subject: [PATCH] Display preview image when loading --- .../mastodon/activities/MediaActivity.java | 51 ++++++++++++++++--- app/src/main/res/layout/activity_media.xml | 50 +++++++++--------- 2 files changed, 70 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java index 6aae1b14e..b5e3a95e3 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java @@ -17,6 +17,7 @@ package fr.gouv.etalab.mastodon.activities; import android.Manifest; import android.annotation.SuppressLint; +import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Bitmap; @@ -39,13 +40,16 @@ import android.view.ViewGroup; import android.webkit.URLUtil; import android.widget.ImageView; import android.widget.MediaController; +import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.VideoView; import com.bumptech.glide.Glide; +import com.bumptech.glide.RequestManager; import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.request.FutureTarget; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; @@ -54,6 +58,8 @@ import com.github.chrisbanes.photoview.OnMatrixChangedListener; import com.github.chrisbanes.photoview.PhotoView; import java.io.File; import java.util.ArrayList; +import java.util.concurrent.ExecutionException; + import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.client.Entities.Attachment; import fr.gouv.etalab.mastodon.client.Entities.Error; @@ -91,7 +97,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { private TextView progress; private boolean canSwipe; private AppBarLayout appBar; - + private ProgressBar pbar_inf; private enum actionSwipe{ @@ -153,10 +159,10 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) { ActivityCompat.requestPermissions(MediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_REQUEST_CODE); } else { - Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo); + storeFile(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo); } }else{ - Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo); + storeFile(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo); } } }); @@ -208,6 +214,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { }); progress = findViewById(R.id.loader_progress); + pbar_inf = findViewById(R.id.pbar_inf); setTitle(""); isHiding = false; @@ -216,6 +223,21 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { } + private void storeFile(final Context context, final String preview_url, final String url, Bitmap bitmap, File fileVideo){ + File file; + if( fileVideo != null) { + file = new File(getCacheDir() + "/" + Helper.md5(url) + ".mp4"); + if(file.exists()) { + Helper.manageMoveFileDownload(context, preview_url, url, null, fileVideo); + }else { + new HttpsConnection(MediaActivity.this).download(url, MediaActivity.this ); + } + }else{ + Helper.manageMoveFileDownload(context, preview_url, url, bitmap, null); + } + + } + /** * Manage touch event * Allows to swipe from timelines @@ -309,6 +331,13 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { final String finalUrl = url; switch (type){ case "image": + imageView.setVisibility(View.VISIBLE); + fileVideo = null; + pbar_inf.setIndeterminate(true); + loader.setVisibility(View.VISIBLE); + Glide.with(getApplicationContext()) + .asBitmap() + .load(preview_url).into(imageView); Glide.with(getApplicationContext()) .asBitmap() .load(url) @@ -329,7 +358,6 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { @Override public void onResourceReady(Bitmap resource, Transition transition) { loader.setVisibility(View.GONE); - imageView.setVisibility(View.VISIBLE); downloadedImage = resource; imageView.setImageBitmap(resource); fileVideo = null; @@ -338,7 +366,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { break; case "video": case "gifv": - + pbar_inf.setIndeterminate(false); File file = new File(getCacheDir() + "/" + Helper.md5(url)+".mp4"); if(file.exists()) { Uri uri = Uri.parse(file.getAbsolutePath()); @@ -359,9 +387,16 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface { fileVideo = file; downloadedImage = null; }else{ - progress.setText("0 %"); - progress.setVisibility(View.VISIBLE); - new HttpsConnection(MediaActivity.this).download(finalUrl, MediaActivity.this ); + Uri video = Uri.parse(finalUrl); + MediaController mc = new MediaController(MediaActivity.this); + videoView.setMediaController(mc); + videoView.setVideoURI(video); + videoView.requestFocus(); + videoView.setVisibility(View.VISIBLE); + videoView.start(); + //progress.setText("0 %"); + //progress.setVisibility(View.VISIBLE); + //new HttpsConnection(MediaActivity.this).download(finalUrl, MediaActivity.this ); } break; } diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index d6a03b7b9..0db18bd39 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -50,6 +50,32 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main_container_media"> + + + + + - - - - - + \ No newline at end of file