Display preview image when loading
This commit is contained in:
parent
985a736399
commit
97ae47bc5d
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue