Use fresco image loader instead of glide (#2282)

This commit is contained in:
Vivek Maskara 2019-01-16 21:17:28 +05:30 committed by Ashish Kumar
parent 5cda35c5f5
commit 21f82dd346
3 changed files with 58 additions and 1 deletions

View file

@ -39,7 +39,9 @@ dependencies {
implementation files('libs/simplemagic-1.9.jar')
implementation "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
kapt "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
implementation 'com.github.esafirm.android-image-picker:imagepicker:1.13.1'
implementation('com.github.esafirm.android-image-picker:imagepicker:1.13.1', {
exclude group: 'com.github.bumptech.glide', module: 'glide'
})
// Logging
implementation 'ch.acra:acra:4.9.2'

View file

@ -16,6 +16,7 @@ import javax.inject.Named;
import javax.inject.Singleton;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.media.FrescoImageLoader;
import fr.free.nrw.commons.kvstore.BasicKvStore;
import fr.free.nrw.commons.kvstore.JsonKvStore;
import fr.free.nrw.commons.nearby.Place;
@ -95,6 +96,7 @@ public class ContributionController {
.showCamera(false)
.folderMode(true)
.includeVideo(false)
.imageLoader(new FrescoImageLoader())
.enableLog(true);
if (imageLimit > 1) {

View file

@ -0,0 +1,53 @@
package fr.free.nrw.commons.media;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.ImageView;
import com.esafirm.imagepicker.features.imageloader.ImageLoader;
import com.esafirm.imagepicker.features.imageloader.ImageType;
import com.facebook.common.util.UriUtil;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.drawable.ProgressBarDrawable;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.DraweeHolder;
import com.facebook.imagepipeline.common.ResizeOptions;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
public class FrescoImageLoader implements ImageLoader {
@Override
public void loadImage(String path, ImageView imageView, ImageType imageType) {
Drawable defaultDrawable = imageView.getDrawable();
Resources resources = imageView.getContext().getResources();
GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(resources)
.build();
final DraweeHolder<GenericDraweeHierarchy> draweeHolder = DraweeHolder.create(hierarchy, imageView.getContext());
draweeHolder.getHierarchy().setProgressBarImage(new ProgressBarDrawable());
Drawable drawable = draweeHolder.getHierarchy().getTopLevelDrawable();
if (drawable == null) {
imageView.setImageDrawable(defaultDrawable);
} else {
imageView.setImageDrawable(drawable);
}
Uri uri = new Uri.Builder()
.scheme(UriUtil.LOCAL_FILE_SCHEME)
.path(path)
.build();
ImageRequest imageRequest = ImageRequestBuilder
.newBuilderWithSource(uri)
.setResizeOptions(new ResizeOptions(200, 200))
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeHolder.getController())
.setImageRequest(imageRequest)
.build();
draweeHolder.setController(controller);
}
}