diff options
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/view')
6 files changed, 43 insertions, 0 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/view/AlbumView.java b/app/src/main/java/github/daneren2005/dsub/view/AlbumView.java index 343a36f7..048d5a75 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/AlbumView.java +++ b/app/src/main/java/github/daneren2005/dsub/view/AlbumView.java @@ -86,6 +86,10 @@ public class AlbumView extends UpdateView2<MusicDirectory.Entry, ImageLoader> { file = null; } + public void onUpdateImageView() { + imageTask = item2.loadImage(coverArtView, item, false, true); + } + @Override protected void updateBackground() { if(file == null) { diff --git a/app/src/main/java/github/daneren2005/dsub/view/PlaylistView.java b/app/src/main/java/github/daneren2005/dsub/view/PlaylistView.java index 7d475262..7b5750a8 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/PlaylistView.java +++ b/app/src/main/java/github/daneren2005/dsub/view/PlaylistView.java @@ -55,6 +55,10 @@ public class PlaylistView extends UpdateView<Playlist> { imageTask = imageLoader.loadImage(coverArtView, playlist, false, true); } + public void onUpdateImageView() { + imageTask = imageLoader.loadImage(coverArtView, item, false, true); + } + @Override protected void updateBackground() { pinned = SyncUtil.isSyncedPlaylist(context, item.getId()); diff --git a/app/src/main/java/github/daneren2005/dsub/view/PodcastChannelView.java b/app/src/main/java/github/daneren2005/dsub/view/PodcastChannelView.java index 4b19eedd..d3f50954 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/PodcastChannelView.java +++ b/app/src/main/java/github/daneren2005/dsub/view/PodcastChannelView.java @@ -78,6 +78,12 @@ public class PodcastChannelView extends UpdateView<PodcastChannel> { imageTask = imageLoader.loadImage(coverArtView, channel, false, true); } } + + public void onUpdateImageView() { + if(imageLoader != null) { + imageTask = imageLoader.loadImage(coverArtView, item, false, true); + } + } @Override protected void updateBackground() { diff --git a/app/src/main/java/github/daneren2005/dsub/view/RecyclingImageView.java b/app/src/main/java/github/daneren2005/dsub/view/RecyclingImageView.java index 0c85697f..a7208cee 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/RecyclingImageView.java +++ b/app/src/main/java/github/daneren2005/dsub/view/RecyclingImageView.java @@ -27,6 +27,8 @@ import android.util.AttributeSet; import android.widget.ImageView; public class RecyclingImageView extends ImageView { + private boolean invalidated = false; + public RecyclingImageView(Context context) { super(context); } @@ -51,6 +53,7 @@ public class RecyclingImageView extends ImageView { if(drawable instanceof BitmapDrawable) { if (isBitmapRecycled(drawable)) { this.setImageDrawable(null); + invalidated = true; } } else if(drawable instanceof TransitionDrawable) { TransitionDrawable transitionDrawable = (TransitionDrawable) drawable; @@ -59,6 +62,7 @@ public class RecyclingImageView extends ImageView { Drawable lastDrawable = transitionDrawable.getDrawable(transitionDrawable.getNumberOfLayers() - 1); if(isBitmapRecycled(lastDrawable)) { this.setImageDrawable(null); + invalidated = true; } else { // Go through earlier bitmaps and make sure that they are not recycled for (int i = 0; i < transitionDrawable.getNumberOfLayers(); i++) { @@ -76,6 +80,12 @@ public class RecyclingImageView extends ImageView { super.onDraw(canvas); } + @Override + public void setImageDrawable(Drawable drawable) { + super.setImageDrawable(drawable); + invalidated = false; + } + private boolean isBitmapRecycled(Drawable drawable) { if(!(drawable instanceof BitmapDrawable)) { return false; @@ -88,4 +98,8 @@ public class RecyclingImageView extends ImageView { return false; } } + + public boolean isInvalidated() { + return invalidated; + } } diff --git a/app/src/main/java/github/daneren2005/dsub/view/UpdateView.java b/app/src/main/java/github/daneren2005/dsub/view/UpdateView.java index d59f23d0..8f3b5271 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/UpdateView.java +++ b/app/src/main/java/github/daneren2005/dsub/view/UpdateView.java @@ -275,6 +275,13 @@ public abstract class UpdateView<T> extends LinearLayout { ratingBar.setRating(isRated); rating = isRated; } + + if(coverArtView != null && coverArtView instanceof RecyclingImageView) { + RecyclingImageView recyclingImageView = (RecyclingImageView) coverArtView; + if(recyclingImageView.isInvalidated()) { + onUpdateImageView(); + } + } } public boolean isCheckable() { @@ -295,6 +302,10 @@ public abstract class UpdateView<T> extends LinearLayout { } + public void onUpdateImageView() { + + } + public static class UpdateViewHolder<T> extends RecyclerView.ViewHolder { private UpdateView updateView; private View view; diff --git a/app/src/main/java/github/daneren2005/dsub/view/UserView.java b/app/src/main/java/github/daneren2005/dsub/view/UserView.java index a97d755b..38ad4f78 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/UserView.java +++ b/app/src/main/java/github/daneren2005/dsub/view/UserView.java @@ -47,4 +47,8 @@ public class UserView extends UpdateView2<User, ImageLoader> { usernameView.setText(user.getUsername()); imageTask = imageLoader.loadAvatar(context, avatarView, user.getUsername()); } + + public void onUpdateImageView() { + imageTask = item2.loadAvatar(context, avatarView, item.getUsername()); + } } |