Skip to content

Commit

Permalink
Fix sharp corners on placeholders
Browse files Browse the repository at this point in the history
All placeholder now have round corners matching the corner radius of the
image that will eventually load.

I also added placeholder to the avatars on the contributor screen.
  • Loading branch information
flofriday committed Apr 26, 2024
1 parent 4cf3623 commit 09af6e2
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 13 deletions.
Expand Up @@ -24,6 +24,7 @@
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.ui.common.ImagePlaceholder;
import de.danoeh.antennapod.ui.screen.preferences.PreferenceActivity;
import de.danoeh.antennapod.ui.screen.AllEpisodesFragment;
import de.danoeh.antennapod.ui.screen.download.CompletedDownloadsFragment;
Expand Down Expand Up @@ -314,13 +315,14 @@ private void bindFeedView(NavDrawerData.FeedDrawerItem drawerItem, FeedHolder ho
return;
}

float radius = 4 * context.getResources().getDisplayMetrics().density;
Glide.with(context)
.load(feed.getImageUrl())
.apply(new RequestOptions()
.placeholder(R.color.light_gray)
.error(R.color.light_gray)
.placeholder(ImagePlaceholder.getDrawable(context, radius))
.error(ImagePlaceholder.getDrawable(context, radius))
.transform(new FitCenter(),
new RoundedCorners((int) (4 * context.getResources().getDisplayMetrics().density)))
new RoundedCorners((int) radius))
.dontAnimate())
.into(holder.image);

Expand Down
Expand Up @@ -52,6 +52,7 @@
import de.danoeh.antennapod.ui.common.Converter;
import de.danoeh.antennapod.ui.common.DateFormatter;
import de.danoeh.antennapod.ui.common.CircularProgressBar;
import de.danoeh.antennapod.ui.common.ImagePlaceholder;
import de.danoeh.antennapod.ui.common.ThemeUtils;
import de.danoeh.antennapod.ui.cleaner.ShownotesCleaner;
import de.danoeh.antennapod.ui.episodes.ImageResourceUtils;
Expand Down Expand Up @@ -286,10 +287,11 @@ private void updateAppearance() {
txtvPublished.setContentDescription(DateFormatter.formatForAccessibility(item.getPubDate()));
}

float radius = 8 * getResources().getDisplayMetrics().density;
RequestOptions options = new RequestOptions()
.error(R.color.light_gray)
.error(ImagePlaceholder.getDrawable(getContext(), radius))
.transform(new FitCenter(),
new RoundedCorners((int) (8 * getResources().getDisplayMetrics().density)))
new RoundedCorners((int) radius))
.dontAnimate();

Glide.with(this)
Expand Down
@@ -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;
}
}
Expand Up @@ -10,6 +10,7 @@
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;
Expand Down Expand Up @@ -61,12 +62,12 @@ public View getView(int position, View convertView, ViewGroup parent) {
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);

Expand Down
Expand Up @@ -18,6 +18,7 @@
import java.util.List;

import de.danoeh.antennapod.net.discovery.PodcastSearchResult;
import de.danoeh.antennapod.ui.common.ImagePlaceholder;

public class OnlineSearchAdapter extends ArrayAdapter<PodcastSearchResult> {
/**
Expand Down Expand Up @@ -76,14 +77,14 @@ public View getView(int position, View convertView, @NonNull ViewGroup parent) {
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);

Expand Down
Expand Up @@ -13,6 +13,7 @@
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;
Expand Down Expand Up @@ -43,12 +44,13 @@ public View getView(int position, View view, ViewGroup parent) {
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)));
}
Expand Down

0 comments on commit 09af6e2

Please sign in to comment.