Display preview image when loading

This commit is contained in:
stom79 2017-12-23 19:31:12 +01:00
parent 985a736399
commit 97ae47bc5d
2 changed files with 70 additions and 31 deletions

View File

@ -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<? super Bitmap> 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;
}

View File

@ -50,6 +50,32 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_container_media">
<!-- Main Loader -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loader"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:indeterminate="false"
android:id="@+id/pbar_inf"
android:layout_width="match_parent"
android:max="100"
android:progress="0"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/loader_progress"
android:layout_width="match_parent"
android:textColor="@color/dark_text"
android:gravity="center"
android:textSize="12sp"
android:layout_gravity="center"
android:layout_height="wrap_content" />
</RelativeLayout>
<com.github.chrisbanes.photoview.PhotoView
android:visibility="gone"
android:layout_centerInParent="true"
@ -86,29 +112,7 @@
android:layout_width="20dp"
android:layout_height="20dp"
tools:ignore="ContentDescription" />
<!-- Main Loader -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loader"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
>
<ProgressBar
android:id="@+id/pbar_inf"
android:layout_width="50dp"
android:layout_height="50dp"
android:indeterminate="true" />
<TextView
android:id="@+id/loader_progress"
android:textSize="12sp"
android:visibility="gone"
android:layout_marginTop="10dp"
android:textColor="?attr/colorAccent"
android:layout_below="@+id/pbar_inf"
android:layout_width="50dp"
android:gravity="center"
android:layout_height="wrap_content" />
</RelativeLayout>
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.DrawerLayout>