mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-30 13:35:18 +00:00
parent
c33363d0bd
commit
a3115c14ac
@ -0,0 +1,33 @@
|
|||||||
|
package org.thoughtcrime.securesms.components;
|
||||||
|
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import com.bumptech.glide.request.target.BitmapImageViewTarget;
|
||||||
|
|
||||||
|
import org.thoughtcrime.securesms.util.concurrent.SettableFuture;
|
||||||
|
|
||||||
|
public class GlideBitmapListeningTarget extends BitmapImageViewTarget {
|
||||||
|
|
||||||
|
private final SettableFuture<Boolean> loaded;
|
||||||
|
|
||||||
|
public GlideBitmapListeningTarget(@NonNull ImageView view, @NonNull SettableFuture<Boolean> loaded) {
|
||||||
|
super(view);
|
||||||
|
this.loaded = loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setResource(@Nullable Bitmap resource) {
|
||||||
|
super.setResource(resource);
|
||||||
|
loaded.set(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoadFailed(@Nullable Drawable errorDrawable) {
|
||||||
|
super.onLoadFailed(errorDrawable);
|
||||||
|
loaded.set(true);
|
||||||
|
}
|
||||||
|
}
|
@ -9,11 +9,11 @@ import com.bumptech.glide.request.target.DrawableImageViewTarget;
|
|||||||
|
|
||||||
import org.thoughtcrime.securesms.util.concurrent.SettableFuture;
|
import org.thoughtcrime.securesms.util.concurrent.SettableFuture;
|
||||||
|
|
||||||
public class GlideListeningTarget extends DrawableImageViewTarget {
|
public class GlideDrawableListeningTarget extends DrawableImageViewTarget {
|
||||||
|
|
||||||
private final SettableFuture<Boolean> loaded;
|
private final SettableFuture<Boolean> loaded;
|
||||||
|
|
||||||
public GlideListeningTarget(@NonNull ImageView view, @NonNull SettableFuture<Boolean> loaded) {
|
public GlideDrawableListeningTarget(@NonNull ImageView view, @NonNull SettableFuture<Boolean> loaded) {
|
||||||
super(view);
|
super(view);
|
||||||
this.loaded = loaded;
|
this.loaded = loaded;
|
||||||
}
|
}
|
@ -3,9 +3,7 @@ package org.thoughtcrime.securesms.components;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.support.annotation.DrawableRes;
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
import android.support.annotation.UiThread;
|
import android.support.annotation.UiThread;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -15,16 +13,12 @@ import android.widget.FrameLayout;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import com.bumptech.glide.RequestBuilder;
|
import com.bumptech.glide.RequestBuilder;
|
||||||
import com.bumptech.glide.load.DataSource;
|
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.engine.GlideException;
|
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
|
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
|
||||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
|
||||||
import com.bumptech.glide.load.resource.bitmap.FitCenter;
|
import com.bumptech.glide.load.resource.bitmap.FitCenter;
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||||
import com.bumptech.glide.request.RequestListener;
|
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
import com.bumptech.glide.request.target.Target;
|
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.database.AttachmentDatabase;
|
import org.thoughtcrime.securesms.database.AttachmentDatabase;
|
||||||
@ -280,9 +274,9 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
SettableFuture<Boolean> result = new SettableFuture<>();
|
SettableFuture<Boolean> result = new SettableFuture<>();
|
||||||
|
|
||||||
if (slide.getThumbnailUri() != null) {
|
if (slide.getThumbnailUri() != null) {
|
||||||
buildThumbnailGlideRequest(glideRequests, slide).into(new GlideListeningTarget(image, result));
|
buildThumbnailGlideRequest(glideRequests, slide).into(new GlideDrawableListeningTarget(image, result));
|
||||||
} else if (slide.hasPlaceholder()) {
|
} else if (slide.hasPlaceholder()) {
|
||||||
buildPlaceholderGlideRequest(glideRequests, slide).into(new GlideListeningTarget(image, result));
|
buildPlaceholderGlideRequest(glideRequests, slide).into(new GlideBitmapListeningTarget(image, result));
|
||||||
} else {
|
} else {
|
||||||
glideRequests.clear(image);
|
glideRequests.clear(image);
|
||||||
result.set(false);
|
result.set(false);
|
||||||
@ -299,7 +293,7 @@ public class ThumbnailView extends FrameLayout {
|
|||||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||||
.transforms(new CenterCrop(), new RoundedCorners(radius))
|
.transforms(new CenterCrop(), new RoundedCorners(radius))
|
||||||
.transition(withCrossFade())
|
.transition(withCrossFade())
|
||||||
.into(new GlideListeningTarget(image, future));
|
.into(new GlideDrawableListeningTarget(image, future));
|
||||||
|
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user