From 7c18547731d1509514b1df2c162aa91c3e6e3052 Mon Sep 17 00:00:00 2001 From: Materight Date: Thu, 1 Jun 2017 16:38:36 +0200 Subject: [PATCH 1/2] Added color on album on artist page --- .../adapter/album/AlbumAdapter.java | 2 +- .../adapter/album/HorizontalAlbumAdapter.java | 20 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) 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; + super(activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, true, cabHolder); } @Override @@ -30,6 +32,20 @@ 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 String getAlbumText(Album album) { return String.valueOf(album.getYear()); From 2fa79c6d09a693fdfbe80680feb509a4049a1f2e Mon Sep 17 00:00:00 2001 From: Materight Date: Tue, 6 Jun 2017 15:37:41 +0200 Subject: [PATCH 2/2] Added an option to turn off the color --- .../adapter/album/HorizontalAlbumAdapter.java | 32 +++++++++++++++++-- .../glide/PhonographColoredTarget.java | 4 +++ .../ui/activities/ArtistDetailActivity.java | 16 +++++++++- .../gramophone/util/PreferenceUtil.java | 11 +++++++ app/src/main/res/menu/menu_artist_detail.xml | 6 ++++ 5 files changed, 66 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/HorizontalAlbumAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/HorizontalAlbumAdapter.java index a3f5b59a..0ebdcf68 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/album/HorizontalAlbumAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/album/HorizontalAlbumAdapter.java @@ -1,5 +1,6 @@ package com.kabouzeid.gramophone.adapter.album; +import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; @@ -7,8 +8,11 @@ import android.support.v7.widget.CardView; import android.view.View; import android.view.ViewGroup; +import com.bumptech.glide.Glide; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; +import com.kabouzeid.gramophone.glide.PhonographColoredTarget; +import com.kabouzeid.gramophone.glide.SongGlideRequest; import com.kabouzeid.gramophone.helper.HorizontalAdapterHelper; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.model.Album; @@ -21,8 +25,8 @@ import java.util.ArrayList; public class HorizontalAlbumAdapter extends AlbumAdapter { public static final String TAG = AlbumAdapter.class.getSimpleName(); - public HorizontalAlbumAdapter(@NonNull AppCompatActivity activity, ArrayList dataSet, @Nullable CabHolder cabHolder) { - super(activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, true, cabHolder); + public HorizontalAlbumAdapter(@NonNull AppCompatActivity activity, ArrayList dataSet,boolean usePalette, @Nullable CabHolder cabHolder) { + super(activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, usePalette, cabHolder); } @Override @@ -46,6 +50,30 @@ public class HorizontalAlbumAdapter extends AlbumAdapter { } } + @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 69800a43..3a549357 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"; @@ -319,6 +320,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" /> + +