kopia lustrzana https://github.com/ryukoposting/Signal-Android
Clean up ThumbnailView warnings.
rodzic
702cf6ef71
commit
22cad64089
|
@ -24,7 +24,6 @@ import androidx.appcompat.widget.AppCompatImageView;
|
||||||
|
|
||||||
import com.bumptech.glide.RequestBuilder;
|
import com.bumptech.glide.RequestBuilder;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
|
|
||||||
import com.bumptech.glide.request.Request;
|
import com.bumptech.glide.request.Request;
|
||||||
import com.bumptech.glide.request.RequestListener;
|
import com.bumptech.glide.request.RequestListener;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
|
@ -69,7 +68,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
|
|
||||||
private Bitmap imageBitmap;
|
private Bitmap imageBitmap;
|
||||||
private final ImageView image;
|
private final ImageView image;
|
||||||
private final ImageView blurhash;
|
private final ImageView blurHash;
|
||||||
private final View playOverlay;
|
private final View playOverlay;
|
||||||
private final View captionIcon;
|
private final View captionIcon;
|
||||||
private final AppCompatImageView errorImage;
|
private final AppCompatImageView errorImage;
|
||||||
|
@ -82,6 +81,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
|
|
||||||
private final CornerMask cornerMask;
|
private final CornerMask cornerMask;
|
||||||
|
|
||||||
|
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
||||||
private Optional<TransferControlView> transferControls = Optional.empty();
|
private Optional<TransferControlView> transferControls = Optional.empty();
|
||||||
private SlideClickListener thumbnailClickListener = null;
|
private SlideClickListener thumbnailClickListener = null;
|
||||||
private SlidesClickedListener downloadClickListener = null;
|
private SlidesClickedListener downloadClickListener = null;
|
||||||
|
@ -102,7 +102,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
inflate(context, R.layout.thumbnail_view, this);
|
inflate(context, R.layout.thumbnail_view, this);
|
||||||
|
|
||||||
this.image = findViewById(R.id.thumbnail_image);
|
this.image = findViewById(R.id.thumbnail_image);
|
||||||
this.blurhash = findViewById(R.id.thumbnail_blurhash);
|
this.blurHash = findViewById(R.id.thumbnail_blurhash);
|
||||||
this.playOverlay = findViewById(R.id.play_overlay);
|
this.playOverlay = findViewById(R.id.play_overlay);
|
||||||
this.captionIcon = findViewById(R.id.thumbnail_caption_icon);
|
this.captionIcon = findViewById(R.id.thumbnail_caption_icon);
|
||||||
this.errorImage = findViewById(R.id.thumbnail_error);
|
this.errorImage = findViewById(R.id.thumbnail_error);
|
||||||
|
@ -150,6 +150,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
MeasureSpec.makeMeasureSpec(finalHeight, MeasureSpec.EXACTLY));
|
MeasureSpec.makeMeasureSpec(finalHeight, MeasureSpec.EXACTLY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("SpellCheckingInspection")
|
||||||
@Override
|
@Override
|
||||||
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
||||||
super.onSizeChanged(w, h, oldw, oldh);
|
super.onSizeChanged(w, h, oldw, oldh);
|
||||||
|
@ -258,9 +259,9 @@ public class ThumbnailView extends FrameLayout {
|
||||||
targetDimens[HEIGHT] = (int) measuredHeight;
|
targetDimens[HEIGHT] = (int) measuredHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getNonZeroCount(int[] vals) {
|
private int getNonZeroCount(int[] values) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (int val : vals) {
|
for (int val : values) {
|
||||||
if (val > 0) {
|
if (val > 0) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
@ -276,13 +277,13 @@ public class ThumbnailView extends FrameLayout {
|
||||||
@Override
|
@Override
|
||||||
public void setFocusable(boolean focusable) {
|
public void setFocusable(boolean focusable) {
|
||||||
super.setFocusable(focusable);
|
super.setFocusable(focusable);
|
||||||
if (transferControls.isPresent()) transferControls.get().setFocusable(focusable);
|
transferControls.ifPresent(transferControlView -> transferControlView.setFocusable(focusable));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setClickable(boolean clickable) {
|
public void setClickable(boolean clickable) {
|
||||||
super.setClickable(clickable);
|
super.setClickable(clickable);
|
||||||
if (transferControls.isPresent()) transferControls.get().setClickable(clickable);
|
transferControls.ifPresent(transferControlView -> transferControlView.setClickable(clickable));
|
||||||
}
|
}
|
||||||
|
|
||||||
public @Nullable Bitmap getBitmap() {
|
public @Nullable Bitmap getBitmap() {
|
||||||
|
@ -307,10 +308,10 @@ public class ThumbnailView extends FrameLayout {
|
||||||
|
|
||||||
public void setImageDrawable(@NonNull GlideRequests glideRequests, @Nullable Drawable drawable) {
|
public void setImageDrawable(@NonNull GlideRequests glideRequests, @Nullable Drawable drawable) {
|
||||||
glideRequests.clear(image);
|
glideRequests.clear(image);
|
||||||
glideRequests.clear(blurhash);
|
glideRequests.clear(blurHash);
|
||||||
|
|
||||||
image.setImageDrawable(drawable);
|
image.setImageDrawable(drawable);
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
|
@ -331,8 +332,8 @@ public class ThumbnailView extends FrameLayout {
|
||||||
transferControls.ifPresent(c -> c.setVisibility(View.GONE));
|
transferControls.ifPresent(c -> c.setVisibility(View.GONE));
|
||||||
playOverlay.setVisibility(View.GONE);
|
playOverlay.setVisibility(View.GONE);
|
||||||
|
|
||||||
glideRequests.clear(blurhash);
|
glideRequests.clear(blurHash);
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
|
|
||||||
glideRequests.clear(image);
|
glideRequests.clear(image);
|
||||||
image.setImageDrawable(null);
|
image.setImageDrawable(null);
|
||||||
|
@ -386,7 +387,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
+ ", progress " + slide.getTransferState() + ", fast preflight id: " +
|
+ ", progress " + slide.getTransferState() + ", fast preflight id: " +
|
||||||
slide.asAttachment().getFastPreflightId());
|
slide.asAttachment().getFastPreflightId());
|
||||||
|
|
||||||
BlurHash previousBlurhash = this.slide != null ? this.slide.getPlaceholderBlur() : null;
|
BlurHash previousBlurHash = this.slide != null ? this.slide.getPlaceholderBlur() : null;
|
||||||
|
|
||||||
this.slide = slide;
|
this.slide = slide;
|
||||||
|
|
||||||
|
@ -400,19 +401,19 @@ public class ThumbnailView extends FrameLayout {
|
||||||
SettableFuture<Boolean> result = new SettableFuture<>();
|
SettableFuture<Boolean> result = new SettableFuture<>();
|
||||||
boolean resultHandled = false;
|
boolean resultHandled = false;
|
||||||
|
|
||||||
if (slide.hasPlaceholder() && (previousBlurhash == null || !Objects.equals(slide.getPlaceholderBlur(), previousBlurhash))) {
|
if (slide.hasPlaceholder() && (previousBlurHash == null || !Objects.equals(slide.getPlaceholderBlur(), previousBlurHash))) {
|
||||||
buildPlaceholderGlideRequest(glideRequests, slide).into(new GlideBitmapListeningTarget(blurhash, result));
|
buildPlaceholderGlideRequest(glideRequests, slide).into(new GlideBitmapListeningTarget(blurHash, result));
|
||||||
resultHandled = true;
|
resultHandled = true;
|
||||||
} else if (!slide.hasPlaceholder()) {
|
} else if (!slide.hasPlaceholder()) {
|
||||||
glideRequests.clear(blurhash);
|
glideRequests.clear(blurHash);
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (slide.getUri() != null) {
|
if (slide.getUri() != null) {
|
||||||
if (!MediaUtil.isJpegType(slide.getContentType()) && !MediaUtil.isVideoType(slide.getContentType())) {
|
if (!MediaUtil.isJpegType(slide.getContentType()) && !MediaUtil.isVideoType(slide.getContentType())) {
|
||||||
SettableFuture<Boolean> thumbnailFuture = new SettableFuture<>();
|
SettableFuture<Boolean> thumbnailFuture = new SettableFuture<>();
|
||||||
thumbnailFuture.deferTo(result);
|
thumbnailFuture.deferTo(result);
|
||||||
thumbnailFuture.addListener(new BlurhashClearListener(glideRequests, blurhash));
|
thumbnailFuture.addListener(new BlurHashClearListener(glideRequests, blurHash));
|
||||||
}
|
}
|
||||||
|
|
||||||
buildThumbnailGlideRequest(glideRequests, slide).into(new BitmapCaptor(image, result));
|
buildThumbnailGlideRequest(glideRequests, slide).into(new BitmapCaptor(image, result));
|
||||||
|
@ -466,7 +467,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
|
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
@ -476,7 +477,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
|
|
||||||
if (transferControls.isPresent()) getTransferControls().setVisibility(View.GONE);
|
if (transferControls.isPresent()) getTransferControls().setVisibility(View.GONE);
|
||||||
|
|
||||||
GlideRequest request = glideRequests.load(model)
|
GlideRequest<Drawable> request = glideRequests.load(model)
|
||||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||||
.placeholder(model.getPlaceholder())
|
.placeholder(model.getPlaceholder())
|
||||||
.transition(withCrossFade());
|
.transition(withCrossFade());
|
||||||
|
@ -486,7 +487,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
request.into(new BitmapCaptor(image, future));
|
request.into(new BitmapCaptor(image, future));
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
|
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
|
@ -507,8 +508,8 @@ public class ThumbnailView extends FrameLayout {
|
||||||
getTransferControls().clear();
|
getTransferControls().clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
glideRequests.clear(blurhash);
|
glideRequests.clear(blurHash);
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
|
|
||||||
slide = null;
|
slide = null;
|
||||||
}
|
}
|
||||||
|
@ -530,8 +531,8 @@ public class ThumbnailView extends FrameLayout {
|
||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private GlideRequest buildThumbnailGlideRequest(@NonNull GlideRequests glideRequests, @NonNull Slide slide) {
|
private GlideRequest<Drawable> buildThumbnailGlideRequest(@NonNull GlideRequests glideRequests, @NonNull Slide slide) {
|
||||||
GlideRequest request = applySizing(glideRequests.load(new DecryptableUri(slide.getUri()))
|
GlideRequest<Drawable> request = applySizing(glideRequests.load(new DecryptableUri(Objects.requireNonNull(slide.getUri())))
|
||||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||||
.transition(withCrossFade()));
|
.transition(withCrossFade()));
|
||||||
|
|
||||||
|
@ -544,7 +545,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private RequestBuilder buildPlaceholderGlideRequest(@NonNull GlideRequests glideRequests, @NonNull Slide slide) {
|
private RequestBuilder<Bitmap> buildPlaceholderGlideRequest(@NonNull GlideRequests glideRequests, @NonNull Slide slide) {
|
||||||
GlideRequest<Bitmap> bitmap = glideRequests.asBitmap();
|
GlideRequest<Bitmap> bitmap = glideRequests.asBitmap();
|
||||||
BlurHash placeholderBlur = slide.getPlaceholderBlur();
|
BlurHash placeholderBlur = slide.getPlaceholderBlur();
|
||||||
|
|
||||||
|
@ -557,7 +558,7 @@ public class ThumbnailView extends FrameLayout {
|
||||||
return applySizing(bitmap.diskCacheStrategy(DiskCacheStrategy.NONE));
|
return applySizing(bitmap.diskCacheStrategy(DiskCacheStrategy.NONE));
|
||||||
}
|
}
|
||||||
|
|
||||||
private GlideRequest applySizing(@NonNull GlideRequest request) {
|
private <TranscodeType> GlideRequest<TranscodeType> applySizing(@NonNull GlideRequest<TranscodeType> request) {
|
||||||
int[] size = new int[2];
|
int[] size = new int[2];
|
||||||
fillTargetDimensions(size, dimens, bounds);
|
fillTargetDimensions(size, dimens, bounds);
|
||||||
if (size[WIDTH] == 0 && size[HEIGHT] == 0) {
|
if (size[WIDTH] == 0 && size[HEIGHT] == 0) {
|
||||||
|
@ -614,31 +615,31 @@ public class ThumbnailView extends FrameLayout {
|
||||||
if (downloadClickListener != null && slide != null) {
|
if (downloadClickListener != null && slide != null) {
|
||||||
downloadClickListener.onClick(view, Collections.singletonList(slide));
|
downloadClickListener.onClick(view, Collections.singletonList(slide));
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "Received a download button click, but unable to execute it. slide: " + String.valueOf(slide) + " downloadClickListener: " + String.valueOf(downloadClickListener));
|
Log.w(TAG, "Received a download button click, but unable to execute it. slide: " + slide + " downloadClickListener: " + downloadClickListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class BlurhashClearListener implements ListenableFuture.Listener<Boolean> {
|
private static class BlurHashClearListener implements ListenableFuture.Listener<Boolean> {
|
||||||
|
|
||||||
private final GlideRequests glideRequests;
|
private final GlideRequests glideRequests;
|
||||||
private final ImageView blurhash;
|
private final ImageView blurHash;
|
||||||
|
|
||||||
private BlurhashClearListener(@NonNull GlideRequests glideRequests, @NonNull ImageView blurhash) {
|
private BlurHashClearListener(@NonNull GlideRequests glideRequests, @NonNull ImageView blurHash) {
|
||||||
this.glideRequests = glideRequests;
|
this.glideRequests = glideRequests;
|
||||||
this.blurhash = blurhash;
|
this.blurHash = blurHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Boolean result) {
|
public void onSuccess(Boolean result) {
|
||||||
glideRequests.clear(blurhash);
|
glideRequests.clear(blurHash);
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(ExecutionException e) {
|
public void onFailure(ExecutionException e) {
|
||||||
glideRequests.clear(blurhash);
|
glideRequests.clear(blurHash);
|
||||||
blurhash.setImageDrawable(null);
|
blurHash.setImageDrawable(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue