summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java100
1 files changed, 32 insertions, 68 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java b/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
index dc82e3adc..1d06bf07c 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/CoverLoader.java
@@ -1,40 +1,28 @@
package de.danoeh.antennapod.adapter;
-import android.content.Context;
import android.graphics.drawable.Drawable;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.core.content.ContextCompat;
-import androidx.core.graphics.ColorUtils;
-import androidx.palette.graphics.Palette;
-
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.CustomViewTarget;
-
-import java.lang.ref.WeakReference;
-
import com.bumptech.glide.request.transition.Transition;
-
-import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.ui.common.ThemeUtils;
-import de.danoeh.antennapod.ui.glide.PaletteBitmap;
+
+import java.lang.ref.WeakReference;
public class CoverLoader {
private int resource = 0;
private String uri;
private String fallbackUri;
- private TextView txtvPlaceholder;
private ImageView imgvCover;
private boolean textAndImageCombined;
private MainActivity activity;
+ private TextView fallbackTitle;
public CoverLoader(MainActivity activity) {
this.activity = activity;
@@ -60,31 +48,30 @@ public class CoverLoader {
return this;
}
- public CoverLoader withPlaceholderView(TextView placeholderView) {
- txtvPlaceholder = placeholderView;
+ public CoverLoader withPlaceholderView(TextView title) {
+ this.fallbackTitle = title;
return this;
}
/**
* Set cover text and if it should be shown even if there is a cover image.
- *
- * @param placeholderView Cover text.
+ * @param fallbackTitle Fallback title text
* @param textAndImageCombined Show cover text even if there is a cover image?
*/
@NonNull
- public CoverLoader withPlaceholderView(@NonNull TextView placeholderView, boolean textAndImageCombined) {
- this.txtvPlaceholder = placeholderView;
+ public CoverLoader withPlaceholderView(TextView fallbackTitle, boolean textAndImageCombined) {
+ this.fallbackTitle = fallbackTitle;
this.textAndImageCombined = textAndImageCombined;
return this;
}
public void load() {
- CoverTarget coverTarget = new CoverTarget(txtvPlaceholder, imgvCover, textAndImageCombined);
+ CoverTarget coverTarget = new CoverTarget(fallbackTitle, imgvCover, textAndImageCombined);
if (resource != 0) {
Glide.with(activity).clear(coverTarget);
imgvCover.setImageResource(resource);
- CoverTarget.setPlaceholderVisibility(txtvPlaceholder, textAndImageCombined, null);
+ CoverTarget.setTitleVisibility(fallbackTitle, textAndImageCombined);
return;
}
@@ -92,14 +79,14 @@ public class CoverLoader {
.fitCenter()
.dontAnimate();
- RequestBuilder<PaletteBitmap> builder = Glide.with(activity)
- .as(PaletteBitmap.class)
+ RequestBuilder<Drawable> builder = Glide.with(activity)
+ .as(Drawable.class)
.load(uri)
.apply(options);
- if (fallbackUri != null && txtvPlaceholder != null && imgvCover != null) {
+ if (fallbackUri != null) {
builder = builder.error(Glide.with(activity)
- .as(PaletteBitmap.class)
+ .as(Drawable.class)
.load(fallbackUri)
.apply(options));
}
@@ -107,64 +94,41 @@ public class CoverLoader {
builder.into(coverTarget);
}
- static class CoverTarget extends CustomViewTarget<ImageView, PaletteBitmap> {
- private final WeakReference<TextView> placeholder;
+ static class CoverTarget extends CustomViewTarget<ImageView, Drawable> {
+ private final WeakReference<TextView> fallbackTitle;
private final WeakReference<ImageView> cover;
- private boolean textAndImageCombined;
+ private final boolean textAndImageCombined;
- public CoverTarget(TextView txtvPlaceholder, ImageView imgvCover, boolean textAndImageCombined) {
- super(imgvCover);
- if (txtvPlaceholder != null) {
- txtvPlaceholder.setVisibility(View.VISIBLE);
- }
- placeholder = new WeakReference<>(txtvPlaceholder);
- cover = new WeakReference<>(imgvCover);
+ public CoverTarget(TextView fallbackTitle, ImageView coverImage, boolean textAndImageCombined) {
+ super(coverImage);
+ this.fallbackTitle = new WeakReference<>(fallbackTitle);
+ this.cover = new WeakReference<>(coverImage);
this.textAndImageCombined = textAndImageCombined;
}
@Override
public void onLoadFailed(Drawable errorDrawable) {
- setPlaceholderVisibility(this.placeholder.get(), true, null);
+ setTitleVisibility(fallbackTitle.get(), true);
}
@Override
- public void onResourceReady(@NonNull PaletteBitmap resource,
- @Nullable Transition<? super PaletteBitmap> transition) {
+ public void onResourceReady(@NonNull Drawable resource,
+ @Nullable Transition<? super Drawable> transition) {
ImageView ivCover = cover.get();
- ivCover.setImageBitmap(resource.bitmap);
- setPlaceholderVisibility(placeholder.get(), textAndImageCombined, resource.palette);
+ ivCover.setImageDrawable(resource);
+ setTitleVisibility(fallbackTitle.get(), textAndImageCombined);
}
@Override
protected void onResourceCleared(@Nullable Drawable placeholder) {
ImageView ivCover = cover.get();
ivCover.setImageDrawable(placeholder);
- setPlaceholderVisibility(this.placeholder.get(), textAndImageCombined, null);
+ setTitleVisibility(fallbackTitle.get(), textAndImageCombined);
}
- static void setPlaceholderVisibility(TextView placeholder, boolean textAndImageCombined, Palette palette) {
- boolean showTitle = UserPreferences.shouldShowSubscriptionTitle();
- if (placeholder != null) {
- if (textAndImageCombined || showTitle) {
- final Context context = placeholder.getContext();
- placeholder.setVisibility(View.VISIBLE);
- int bgColor = ContextCompat.getColor(context, R.color.feed_text_bg);
- if (palette == null || !showTitle) {
- placeholder.setBackgroundColor(bgColor);
- placeholder.setTextColor(ThemeUtils.getColorFromAttr(placeholder.getContext(),
- android.R.attr.textColorPrimary));
- return;
- }
- int dominantColor = palette.getDominantColor(bgColor);
- int textColor = ContextCompat.getColor(context, R.color.white);
- if (ColorUtils.calculateLuminance(dominantColor) > 0.5) {
- textColor = ContextCompat.getColor(context, R.color.black);
- }
- placeholder.setTextColor(textColor);
- placeholder.setBackgroundColor(dominantColor);
- } else {
- placeholder.setVisibility(View.INVISIBLE);
- }
+ static void setTitleVisibility(TextView fallbackTitle, boolean textAndImageCombined) {
+ if (fallbackTitle != null) {
+ fallbackTitle.setVisibility(textAndImageCombined ? View.VISIBLE : View.GONE);
}
}
}