Fix sharp corners on placeholders (#7142)

All placeholder now have round corners matching the corner radius of the
image that will eventually load.
This commit is contained in:
flofriday
2024-04-27 11:28:30 +02:00
committed by GitHub
parent f69822582d
commit c063c59af3
6 changed files with 40 additions and 13 deletions

View File

@ -0,0 +1,19 @@
package de.danoeh.antennapod.ui.common;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import androidx.core.content.ContextCompat;
public class ImagePlaceholder {
public static Drawable getDrawable(Context context, float cornerRadius) {
GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);
int color = ContextCompat.getColor(context, R.color.light_gray);
drawable.setColor(color);
drawable.setCornerRadius(cornerRadius);
return drawable;
}
}

View File

@ -10,6 +10,7 @@ import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.net.discovery.PodcastSearchResult;
import de.danoeh.antennapod.ui.common.ImagePlaceholder;
import java.util.ArrayList;
import java.util.List;
@ -61,12 +62,12 @@ public class FeedDiscoverAdapter extends BaseAdapter {
final PodcastSearchResult podcast = getItem(position);
holder.imageView.setContentDescription(podcast.title);
float radius = 8 * context.getResources().getDisplayMetrics().density;
Glide.with(context)
.load(podcast.imageUrl)
.apply(new RequestOptions()
.placeholder(R.color.light_gray)
.transform(new FitCenter(), new RoundedCorners((int)
(8 * context.getResources().getDisplayMetrics().density)))
.placeholder(ImagePlaceholder.getDrawable(context, radius))
.transform(new FitCenter(), new RoundedCorners((int) radius))
.dontAnimate())
.into(holder.imageView);

View File

@ -18,6 +18,7 @@ import com.bumptech.glide.request.RequestOptions;
import java.util.List;
import de.danoeh.antennapod.net.discovery.PodcastSearchResult;
import de.danoeh.antennapod.ui.common.ImagePlaceholder;
public class OnlineSearchAdapter extends ArrayAdapter<PodcastSearchResult> {
/**
@ -76,14 +77,14 @@ public class OnlineSearchAdapter extends ArrayAdapter<PodcastSearchResult> {
viewHolder.authorView.setVisibility(View.GONE);
}
//Update the empty imageView with the image from the feed
float radius = 4 * context.getResources().getDisplayMetrics().density;
Glide.with(context)
.load(podcast.imageUrl)
.apply(new RequestOptions()
.placeholder(R.color.light_gray)
.placeholder(ImagePlaceholder.getDrawable(context, radius))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.transform(new FitCenter(),
new RoundedCorners((int) (4 * context.getResources().getDisplayMetrics().density)))
new RoundedCorners((int) radius))
.dontAnimate())
.into(viewHolder.coverView);

View File

@ -13,6 +13,7 @@ import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.ui.common.ImagePlaceholder;
import de.danoeh.antennapod.ui.preferences.R;
import java.util.List;
@ -43,12 +44,13 @@ public class SimpleIconListAdapter<T extends SimpleIconListAdapter.ListItem> ext
if (item.imageUrl == null) {
view.findViewById(R.id.icon).setVisibility(View.GONE);
} else {
float radius = 4 * context.getResources().getDisplayMetrics().density;
Glide.with(context)
.load(item.imageUrl)
.apply(new RequestOptions()
.placeholder(ImagePlaceholder.getDrawable(context, radius))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.transform(new FitCenter(), new RoundedCorners((int)
(4 * context.getResources().getDisplayMetrics().density)))
.transform(new FitCenter(), new RoundedCorners((int) radius))
.dontAnimate())
.into(((ImageView) view.findViewById(R.id.icon)));
}