diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java index 696dae5a..dfb79b95 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/AlbumAdapter.java @@ -114,7 +114,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter dataSet, @Nullable CabHolder cabHolder) { - super(activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, false, cabHolder); - usePalette = false; + public HorizontalAlbumAdapter(@NonNull AppCompatActivity activity, ArrayList dataSet,boolean usePalette, @Nullable CabHolder cabHolder) { + super(activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, usePalette, cabHolder); } @Override @@ -30,6 +36,44 @@ public class HorizontalAlbumAdapter extends AlbumAdapter { return new ViewHolder(view); } + @Override + protected void setColors(int color, ViewHolder holder) { + if (holder.itemView != null) { + CardView card=(CardView)holder.itemView; + card.setCardBackgroundColor(color); + if (holder.title != null) { + holder.title.setTextColor(MaterialValueHelper.getPrimaryTextColor(activity, ColorUtil.isColorLight(color))); + } + if (holder.text != null) { + holder.text.setTextColor(MaterialValueHelper.getSecondaryTextColor(activity, ColorUtil.isColorLight(color))); + } + } + } + + @Override + protected void loadAlbumCover(Album album, final ViewHolder holder) { + if (holder.image == null) return; + + SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) + .checkIgnoreMediaStore(activity) + .generatePalette(activity).build() + .into(new PhonographColoredTarget(holder.image) { + @Override + public void onLoadCleared(Drawable placeholder) { + super.onLoadCleared(placeholder); + setColors(getAlbumArtistFooterColor(), holder); + } + + @Override + public void onColorReady(int color) { + if (usePalette) + setColors(color, holder); + else + setColors(getAlbumArtistFooterColor(), holder); + } + }); + } + @Override protected String getAlbumText(Album album) { return String.valueOf(album.getYear()); diff --git a/app/src/main/java/com/kabouzeid/gramophone/glide/PhonographColoredTarget.java b/app/src/main/java/com/kabouzeid/gramophone/glide/PhonographColoredTarget.java index 857c191d..0b99963d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/glide/PhonographColoredTarget.java +++ b/app/src/main/java/com/kabouzeid/gramophone/glide/PhonographColoredTarget.java @@ -31,5 +31,9 @@ public abstract class PhonographColoredTarget extends BitmapPaletteTarget { return ATHUtil.resolveColor(getView().getContext(), R.attr.defaultFooterColor); } + protected int getAlbumArtistFooterColor() { + return ATHUtil.resolveColor(getView().getContext(), R.attr.cardBackgroundColor); + } + public abstract void onColorReady(int color); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index ccf973a5..5ef2b327 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -53,6 +53,7 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.ArtistSignatureUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; +import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.Util; import butterknife.BindView; @@ -91,6 +92,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private int artistImageViewHeight; private int toolbarColor; private float toolbarAlpha; + private boolean usePalette; private Artist artist; @Nullable @@ -109,6 +111,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement supportPostponeEnterTransition(); lastFMRestClient = new LastFMRestClient(this); + usePalette=PreferenceUtil.getInstance(this).albumArtistColoredFooters(); initViews(); setUpObservableListViewParams(); @@ -194,7 +197,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setUpAlbumRecyclerView() { albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); - albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, this); + albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, usePalette, this); albumRecyclerView.setAdapter(albumAdapter); albumAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override @@ -205,6 +208,12 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement }); } + protected void setUsePalette(boolean usePalette) { + albumAdapter.usePalette(usePalette); + PreferenceUtil.getInstance(this).setAlbumArtistColoredFooters(usePalette); + this.usePalette = usePalette; + } + private void reload() { getSupportLoaderManager().restartLoader(LOADER_ID, getIntent().getExtras(), this); } @@ -309,6 +318,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_artist_detail, menu); + menu.findItem(R.id.action_colored_footers).setChecked(usePalette); return true; } @@ -339,6 +349,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.updating), Toast.LENGTH_SHORT).show(); loadArtistImage(true); return true; + case R.id.action_colored_footers: + item.setChecked(!item.isChecked()); + setUsePalette(item.isChecked()); + return true; } return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 61e71660..a893218c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -40,6 +40,7 @@ public final class PreferenceUtil { public static final String ALBUM_COLORED_FOOTERS = "album_colored_footers"; public static final String SONG_COLORED_FOOTERS = "song_colored_footers"; public static final String ARTIST_COLORED_FOOTERS = "artist_colored_footers"; + public static final String ALBUM_ARTIST_COLORED_FOOTERS = "album_artist_colored_footers"; public static final String FORCE_SQUARE_ALBUM_COVER = "force_square_album_art"; @@ -338,6 +339,16 @@ public final class PreferenceUtil { return mPreferences.getBoolean(ALBUM_COLORED_FOOTERS, true); } + public void setAlbumArtistColoredFooters(final boolean value) { + final SharedPreferences.Editor editor = mPreferences.edit(); + editor.putBoolean(ALBUM_ARTIST_COLORED_FOOTERS, value); + editor.apply(); + } + + public final boolean albumArtistColoredFooters() { + return mPreferences.getBoolean(ALBUM_ARTIST_COLORED_FOOTERS, true); + } + public void setSongColoredFooters(final boolean value) { final SharedPreferences.Editor editor = mPreferences.edit(); editor.putBoolean(SONG_COLORED_FOOTERS, value); diff --git a/app/src/main/res/menu/menu_artist_detail.xml b/app/src/main/res/menu/menu_artist_detail.xml index c4432093..3d6a9fcf 100644 --- a/app/src/main/res/menu/menu_artist_detail.xml +++ b/app/src/main/res/menu/menu_artist_detail.xml @@ -19,6 +19,12 @@ android:title="@string/action_re_download_artist_image" app:showAsAction="never" /> + +