Final touch-ups to improved image loading.

This commit is contained in:
Dmitry Brant 2017-05-19 17:19:10 +02:00
parent 7a4062a377
commit 38e7cad345
9 changed files with 44 additions and 33 deletions

View file

@ -11,6 +11,7 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.database.sqlite.SQLiteDatabase;
import android.preference.PreferenceManager;
import android.support.v4.util.LruCache;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.stetho.Stetho;
@ -84,6 +85,7 @@ public class CommonsApplication extends Application {
private static CommonsApplication instance = null;
private AbstractHttpClient httpClient = null;
private MWApi api = null;
LruCache<String, String> thumbnailUrlCache = new LruCache<>(1024);
private CacheController cacheData = null;
private DBOpenHelper dbOpenHelper = null;
private NearbyPlaces nearbyPlaces = null;
@ -139,6 +141,10 @@ public class CommonsApplication extends Application {
return cacheData;
}
public LruCache<String, String> getThumbnailUrlCache() {
return thumbnailUrlCache;
}
public synchronized DBOpenHelper getDBOpenHelper() {
if (dbOpenHelper == null) {
dbOpenHelper = new DBOpenHelper(this);

View file

@ -3,14 +3,12 @@ package fr.free.nrw.commons;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.util.LruCache;
import android.util.AttributeSet;
import com.facebook.drawee.view.SimpleDraweeView;
public class MediaWikiImageView extends SimpleDraweeView {
private ThumbnailFetchTask currentThumbnailTask;
LruCache<String, String> thumbnailUrlCache = new LruCache<>(1024);
public MediaWikiImageView(Context context) {
this(context, null);
@ -29,14 +27,13 @@ public class MediaWikiImageView extends SimpleDraweeView {
currentThumbnailTask.cancel(true);
}
if(media == null) {
setImageURI((String) null);
return;
}
if (thumbnailUrlCache.get(media.getFilename()) != null) {
setImageUrl(thumbnailUrlCache.get(media.getFilename()));
if (CommonsApplication.getInstance().getThumbnailUrlCache().get(media.getFilename()) != null) {
setImageUrl(CommonsApplication.getInstance().getThumbnailUrlCache().get(media.getFilename()));
} else {
setImageURI((String) null);
setImageUrl(null);
currentThumbnailTask = new ThumbnailFetchTask(media);
currentThumbnailTask.execute(media.getFilename());
}
@ -64,7 +61,7 @@ public class MediaWikiImageView extends SimpleDraweeView {
if (isCancelled()) {
return;
}
thumbnailUrlCache.put(media.getFilename(), result);
CommonsApplication.getInstance().getThumbnailUrlCache().put(media.getFilename(), result);
setImageUrl(result);
}
}

View file

@ -10,9 +10,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.TextView;
@ -50,10 +48,7 @@ public class MediaDetailFragment extends Fragment {
return mf;
}
private ImageView image;
//private EditText title;
private ProgressBar loadingProgress;
private ImageView loadingFailed;
private MediaWikiImageView image;
private MediaDetailSpacer spacer;
private int initialListTop = 0;
@ -105,9 +100,7 @@ public class MediaDetailFragment extends Fragment {
final View view = inflater.inflate(R.layout.fragment_media_detail, container, false);
image = (ImageView) view.findViewById(R.id.mediaDetailImage);
loadingProgress = (ProgressBar) view.findViewById(R.id.mediaDetailImageLoading);
loadingFailed = (ImageView) view.findViewById(R.id.mediaDetailImageFailed);
image = (MediaWikiImageView) view.findViewById(R.id.mediaDetailImage);
scrollView = (ScrollView) view.findViewById(R.id.mediaDetailScrollView);
// Detail consists of a list view with main pane in header view, plus category list.
@ -178,8 +171,7 @@ public class MediaDetailFragment extends Fragment {
private void displayMediaDetails(final Media media) {
//Always load image from Internet to allow viewing the desc, license, and cats
MediaWikiImageView mwImage = (MediaWikiImageView) image;
mwImage.setMedia(media);
image.setMedia(media);
// FIXME: For transparent images
// FIXME: keep the spinner going while we load data