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.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -39,13 +40,16 @@ import android.view.ViewGroup;
import android.webkit.URLUtil; import android.webkit.URLUtil;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.MediaController; import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.VideoView; import android.widget.VideoView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.FutureTarget;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
@ -54,6 +58,8 @@ import com.github.chrisbanes.photoview.OnMatrixChangedListener;
import com.github.chrisbanes.photoview.PhotoView; import com.github.chrisbanes.photoview.PhotoView;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.client.Entities.Attachment; import fr.gouv.etalab.mastodon.client.Entities.Attachment;
import fr.gouv.etalab.mastodon.client.Entities.Error; import fr.gouv.etalab.mastodon.client.Entities.Error;
@ -91,7 +97,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
private TextView progress; private TextView progress;
private boolean canSwipe; private boolean canSwipe;
private AppBarLayout appBar; private AppBarLayout appBar;
private ProgressBar pbar_inf;
private enum actionSwipe{ 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 ) { 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); ActivityCompat.requestPermissions(MediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_REQUEST_CODE);
} else { } else {
Helper.manageMoveFileDownload(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo); storeFile(MediaActivity.this, preview_url, finalUrlDownload, downloadedImage, fileVideo);
} }
}else{ }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); progress = findViewById(R.id.loader_progress);
pbar_inf = findViewById(R.id.pbar_inf);
setTitle(""); setTitle("");
isHiding = false; 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 * Manage touch event
* Allows to swipe from timelines * Allows to swipe from timelines
@ -309,6 +331,13 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
final String finalUrl = url; final String finalUrl = url;
switch (type){ switch (type){
case "image": 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()) Glide.with(getApplicationContext())
.asBitmap() .asBitmap()
.load(url) .load(url)
@ -329,7 +358,6 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
@Override @Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) { public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
loader.setVisibility(View.GONE); loader.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
downloadedImage = resource; downloadedImage = resource;
imageView.setImageBitmap(resource); imageView.setImageBitmap(resource);
fileVideo = null; fileVideo = null;
@ -338,7 +366,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
break; break;
case "video": case "video":
case "gifv": case "gifv":
pbar_inf.setIndeterminate(false);
File file = new File(getCacheDir() + "/" + Helper.md5(url)+".mp4"); File file = new File(getCacheDir() + "/" + Helper.md5(url)+".mp4");
if(file.exists()) { if(file.exists()) {
Uri uri = Uri.parse(file.getAbsolutePath()); Uri uri = Uri.parse(file.getAbsolutePath());
@ -359,9 +387,16 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
fileVideo = file; fileVideo = file;
downloadedImage = null; downloadedImage = null;
}else{ }else{
progress.setText("0 %"); Uri video = Uri.parse(finalUrl);
progress.setVisibility(View.VISIBLE); MediaController mc = new MediaController(MediaActivity.this);
new HttpsConnection(MediaActivity.this).download(finalUrl, 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; break;
} }

View File

@ -50,6 +50,32 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/main_container_media"> 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 <com.github.chrisbanes.photoview.PhotoView
android:visibility="gone" android:visibility="gone"
android:layout_centerInParent="true" android:layout_centerInParent="true"
@ -86,29 +112,7 @@
android:layout_width="20dp" android:layout_width="20dp"
android:layout_height="20dp" android:layout_height="20dp"
tools:ignore="ContentDescription" /> 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> </RelativeLayout>
</android.support.design.widget.CoordinatorLayout> </android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.DrawerLayout> </android.support.v4.widget.DrawerLayout>