From 698fec921ff3a61488d4944bb8ff819266d603c2 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Fri, 27 Apr 2018 23:10:19 +0200 Subject: [PATCH 01/15] Redesigned album detail page --- .../ui/activities/AlbumDetailActivity.java | 95 ++++--- .../kabouzeid/gramophone/util/MusicUtil.java | 7 +- .../main/res/layout/activity_album_detail.xml | 234 ++++++++++++++---- app/src/main/res/values-land/dimens.xml | 2 +- app/src/main/res/values/dimens.xml | 2 +- 5 files changed, 246 insertions(+), 94 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index a133aa67..d13760cb 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -2,6 +2,8 @@ package com.kabouzeid.gramophone.ui.activities; import android.content.Context; import android.content.Intent; +import android.graphics.Color; +import android.graphics.PorterDuff; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -13,6 +15,7 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.text.Html; import android.text.Spanned; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -27,6 +30,8 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; +import com.kabouzeid.appthemehelper.ATH; +import com.kabouzeid.appthemehelper.util.ATHUtil; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.kabouzeid.gramophone.R; @@ -51,6 +56,7 @@ import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.AbsTagEditorActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.AlbumTagEditorActivity; +import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.Util; @@ -84,19 +90,33 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements ImageView albumArtImageView; @BindView(R.id.toolbar) Toolbar toolbar; - @BindView(R.id.title) - TextView albumTitleView; - @BindView(R.id.list_background) - View songsBackgroundView; + @BindView(R.id.header) + View headerView; + @BindView(R.id.header_overlay) + View headerOverlay; + + @BindView(R.id.artist_icon) + ImageView artistIconImageView; + @BindView(R.id.duration_icon) + ImageView durationIconImageView; + @BindView(R.id.song_count_icon) + ImageView songCountIconImageView; + @BindView(R.id.album_year_icon) + ImageView albumYearIconImageView; + @BindView(R.id.artist_text) + TextView artistTextView; + @BindView(R.id.duration_text) + TextView durationTextView; + @BindView(R.id.song_count_text) + TextView songCountTextView; + @BindView(R.id.album_year_text) + TextView albumYearTextView; private AlbumSongAdapter adapter; private MaterialCab cab; - private int headerOffset; - private int titleViewHeight; - private int albumArtViewHeight; + private int headerViewHeight; private int toolbarColor; - private float toolbarAlpha; @Nullable private Spanned wiki; @@ -128,38 +148,21 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private final SimpleObservableScrollViewCallbacks observableScrollViewCallbacks = new SimpleObservableScrollViewCallbacks() { @Override public void onScrollChanged(int scrollY, boolean b, boolean b2) { - scrollY += albumArtViewHeight + titleViewHeight; - float flexibleRange = albumArtViewHeight - headerOffset; - - // Translate album cover - albumArtImageView.setTranslationY(Math.max(-albumArtViewHeight, -scrollY / 2)); - - // Translate list background - songsBackgroundView.setTranslationY(Math.max(0, -scrollY + albumArtViewHeight)); + scrollY += headerViewHeight; // Change alpha of overlay - toolbarAlpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange)); - toolbar.setBackgroundColor(ColorUtil.withAlpha(toolbarColor, toolbarAlpha)); - setStatusbarColor(ColorUtil.withAlpha(toolbarColor, cab != null && cab.isActive() ? 1 : toolbarAlpha)); + float headerAlpha = Math.max(0, Math.min(1, (float) 2*scrollY/headerViewHeight)); + headerOverlay.setBackgroundColor(ColorUtil.withAlpha(toolbarColor, headerAlpha)); // Translate name text - int maxTitleTranslationY = albumArtViewHeight; - int titleTranslationY = maxTitleTranslationY - scrollY; - titleTranslationY = Math.max(headerOffset, titleTranslationY); - - albumTitleView.setTranslationY(titleTranslationY); + headerView.setTranslationY(Math.max(-scrollY, -headerViewHeight)); + headerOverlay.setTranslationY(Math.max(-scrollY, -headerViewHeight)); } }; private void setUpObservableListViewParams() { - albumArtViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height); toolbarColor = DialogUtils.resolveColor(this, R.attr.defaultFooterColor); - int toolbarHeight = Util.getActionBarSize(this); - titleViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height); - headerOffset = toolbarHeight; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - headerOffset += getResources().getDimensionPixelSize(R.dimen.status_bar_padding); - } + headerViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height); } private void setUpViews() { @@ -195,11 +198,23 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setColors(int color) { toolbarColor = color; - albumTitleView.setBackgroundColor(color); - albumTitleView.setTextColor(MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(color))); + headerView.setBackgroundColor(color); setNavigationbarColor(color); setTaskDescriptionColor(color); + + toolbar.setBackgroundColor(color); + setStatusbarColor(color); + + int secondaryTextColor = MaterialValueHelper.getSecondaryTextColor(this, ColorUtil.isColorLight(color)); + artistIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + durationIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + songCountIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + albumYearIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + artistTextView.setTextColor(MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(color))); + durationTextView.setTextColor(secondaryTextColor); + songCountTextView.setTextColor(secondaryTextColor); + albumYearTextView.setTextColor(secondaryTextColor); } @Override @@ -212,8 +227,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); contentView.post(() -> { - songsBackgroundView.getLayoutParams().height = contentView.getHeight(); - observableScrollViewCallbacks.onScrollChanged(-(albumArtViewHeight + titleViewHeight), false, false); + observableScrollViewCallbacks.onScrollChanged(-(headerViewHeight), false, false); // necessary to fix a bug recyclerView.scrollBy(0, 1); recyclerView.scrollBy(0, -1); @@ -221,7 +235,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements } private void setUpRecyclerViewPadding() { - recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, 0); + recyclerView.setPadding(0, headerViewHeight, 0, 0); } private void setUpToolBar() { @@ -377,7 +391,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements .start(new MaterialCab.Callback() { @Override public boolean onCabCreated(MaterialCab materialCab, Menu menu) { - setStatusbarColor(ColorUtil.stripAlpha(toolbarColor)); return callback.onCabCreated(materialCab, menu); } @@ -388,7 +401,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements @Override public boolean onCabFinished(MaterialCab materialCab) { - setStatusbarColor(ColorUtil.withAlpha(toolbarColor, toolbarAlpha)); return callback.onCabFinished(materialCab); } }); @@ -424,7 +436,12 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements loadWiki(); } - albumTitleView.setText(album.getTitle()); + getSupportActionBar().setTitle(album.getTitle()); + artistTextView.setText(album.getArtistName()); + durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, album.songs))); + songCountTextView.setText(String.valueOf(album.getSongCount())); + albumYearTextView.setText(String.valueOf(album.getYear())); + adapter.swapDataSet(album.songs); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index 869a3323..f4ddaa1b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -126,13 +126,16 @@ public class MusicUtil { public static String getPlaylistInfoString(@NonNull final Context context, @NonNull List songs) { final int songCount = songs.size(); final String songString = songCount == 1 ? context.getResources().getString(R.string.song) : context.getResources().getString(R.string.songs); + final long duration = getTotalDuration(context, songs); + return songCount + " " + songString + " • " + MusicUtil.getReadableDurationString(duration); + } + public static long getTotalDuration(@NonNull final Context context, @NonNull List songs) { long duration = 0; for (int i = 0; i < songs.size(); i++) { duration += songs.get(i).duration; } - - return songCount + " " + songString + " • " + MusicUtil.getReadableDurationString(duration); + return duration; } public static String getReadableDurationString(long songDurationMillis) { diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index 3b313d79..9b98faa8 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -1,60 +1,10 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml index 347dad54..b970a9ad 100644 --- a/app/src/main/res/values-land/dimens.xml +++ b/app/src/main/res/values-land/dimens.xml @@ -1,5 +1,5 @@ - 56dp + 0dp 180dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 25f0dda9..b3179870 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,7 +2,7 @@ 16dp - 72dp + 176dp 4dp 2dp From c49777e5cc1eb6cd21d9f8b75d5887811408a8f2 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 00:42:07 +0200 Subject: [PATCH 02/15] Fix shared element transition --- .../ui/activities/AlbumDetailActivity.java | 11 ++---- .../main/res/layout/activity_album_detail.xml | 37 +++++++++++-------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index d13760cb..cb973303 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -2,9 +2,7 @@ package com.kabouzeid.gramophone.ui.activities; import android.content.Context; import android.content.Intent; -import android.graphics.Color; import android.graphics.PorterDuff; -import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -15,7 +13,6 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.text.Html; import android.text.Spanned; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -30,8 +27,6 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; -import com.kabouzeid.appthemehelper.ATH; -import com.kabouzeid.appthemehelper.util.ATHUtil; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.kabouzeid.gramophone.R; @@ -61,9 +56,8 @@ import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.Util; -import java.util.Locale; - import java.util.ArrayList; +import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; @@ -151,12 +145,13 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements scrollY += headerViewHeight; // Change alpha of overlay - float headerAlpha = Math.max(0, Math.min(1, (float) 2*scrollY/headerViewHeight)); + float headerAlpha = Math.max(0, Math.min(1, (float) 2 * scrollY / headerViewHeight)); headerOverlay.setBackgroundColor(ColorUtil.withAlpha(toolbarColor, headerAlpha)); // Translate name text headerView.setTranslationY(Math.max(-scrollY, -headerViewHeight)); headerOverlay.setTranslationY(Math.max(-scrollY, -headerViewHeight)); + albumArtImageView.setTranslationY(Math.max(-scrollY, -headerViewHeight)); } }; diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index 9b98faa8..fe367e55 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -45,13 +45,7 @@ android:dividerHeight="0dp" android:scrollbars="none" /> - - - @@ -65,15 +59,11 @@ android:orientation="horizontal" tools:ignore="UnusedAttribute"> - + + android:layout_margin="16dp" /> - + + + + + From 55146753f28893442d16a3381d8b7f3337854bcf Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 00:55:27 +0200 Subject: [PATCH 03/15] Fix artist detail activity and a landscape bug --- .../gramophone/ui/activities/AlbumDetailActivity.java | 5 ++++- app/src/main/res/layout/activity_album_detail.xml | 4 ++-- app/src/main/res/values-land/dimens.xml | 3 ++- app/src/main/res/values/dimens.xml | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index cb973303..7dbc0f96 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -157,7 +157,10 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setUpObservableListViewParams() { toolbarColor = DialogUtils.resolveColor(this, R.attr.defaultFooterColor); - headerViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height); + headerViewHeight = getResources().getDimensionPixelSize(R.dimen.detail_header_height); + if (headerViewHeight == 0) { + albumArtImageView.setVisibility(View.GONE); + } } private void setUpViews() { diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index fe367e55..bb7032df 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -53,7 +53,7 @@ diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml index b970a9ad..0262c53c 100644 --- a/app/src/main/res/values-land/dimens.xml +++ b/app/src/main/res/values-land/dimens.xml @@ -1,5 +1,6 @@ - 0dp + 0dp + 56dp 180dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b3179870..6292c780 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,7 +2,8 @@ 16dp - 176dp + 176dp + 72dp 4dp 2dp From 6f75aff2149bb7611f7db8824e77644f9fb52668 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 13:30:17 +0200 Subject: [PATCH 04/15] Bump build version --- app/build.gradle | 4 ++-- app/src/main/assets/phonograph-changelog.html | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0b56407e..8baf292c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,8 +51,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId 'com.kabouzeid.gramophone' - versionCode 155 - versionName '0.16.9' + versionCode 156 + versionName '1.0.0 BETA 1' } buildTypes { release { diff --git a/app/src/main/assets/phonograph-changelog.html b/app/src/main/assets/phonograph-changelog.html index ced146cf..0b88f839 100644 --- a/app/src/main/assets/phonograph-changelog.html +++ b/app/src/main/assets/phonograph-changelog.html @@ -27,6 +27,12 @@

You can view the changelog dialog again at any time from the about section.

+

Version 1.0.0 BETA 1

+

We are coming closer to the first final release!

+
    +
  1. NEW: Album page redesign
  2. +
+

Version 0.16.9

  1. FIX: Crash on start for some users
  2. From 21d7b3d5df186639ba6d8b1e7f7ea5bf5a4c4825 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 13:38:21 +0200 Subject: [PATCH 05/15] Fix album page toolbar color --- .../ui/activities/AlbumDetailActivity.java | 3 +- .../main/res/layout/activity_album_detail.xml | 344 +++++++++--------- 2 files changed, 170 insertions(+), 177 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 7dbc0f96..788fb94c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -202,6 +202,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setTaskDescriptionColor(color); toolbar.setBackgroundColor(color); + setSupportActionBar(toolbar); // needed to auto readjust the toolbar content color setStatusbarColor(color); int secondaryTextColor = MaterialValueHelper.getSecondaryTextColor(this, ColorUtil.isColorLight(color)); @@ -263,7 +264,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_album_detail, menu); - return true; + return super.onCreateOptionsMenu(menu); } private void loadWiki() { diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index bb7032df..fabc56f9 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -1,226 +1,218 @@ - + android:layout_height="match_parent" + android:orientation="vertical"> - + - + android:elevation="@dimen/toolbar_elevation" + tools:ignore="UnusedAttribute"> - + + + + + + + + + + android:orientation="vertical"> - - - + android:layout_height="@dimen/detail_header_height" + android:background="?attr/defaultFooterColor" + android:elevation="@dimen/toolbar_elevation" + android:orientation="horizontal" + tools:ignore="UnusedAttribute"> - - - - - - - + + - - - + android:layout_height="match_parent" + android:layout_marginBottom="16dp" + android:layout_marginTop="16dp" + android:orientation="vertical"> + android:layout_height="wrap_content" + android:layout_weight="2" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingEnd="16dp" + android:paddingLeft="0dp" + android:paddingRight="16dp" + android:paddingStart="0dp"> - + + + android:textAppearance="@style/TextAppearance.AppCompat.Subhead" /> - + - + - + - + android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> - + - + - + - + android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> - + - + - + - - - - - - - + android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> - - - - - + + android:layout_height="match_parent" + android:background="@android:color/transparent" /> + - + - \ No newline at end of file + + + + \ No newline at end of file From f93407ca359ba4416cae8dacd48dd396cf8d4209 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 13:47:07 +0200 Subject: [PATCH 06/15] Better info texts for album page --- .../ui/activities/AlbumDetailActivity.java | 2 +- .../com/kabouzeid/gramophone/util/MusicUtil.java | 11 +++++++---- app/src/main/res/layout/activity_album_detail.xml | 12 ++++++------ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 788fb94c..cc2759a8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -437,8 +437,8 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements getSupportActionBar().setTitle(album.getTitle()); artistTextView.setText(album.getArtistName()); + songCountTextView.setText(MusicUtil.getSongCountString(this, album.getSongCount())); durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, album.songs))); - songCountTextView.setText(String.valueOf(album.getSongCount())); albumYearTextView.setText(String.valueOf(album.getYear())); adapter.swapDataSet(album.songs); diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index f4ddaa1b..4ec9ed83 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -32,7 +32,6 @@ import org.jaudiotagger.audio.AudioFileIO; import org.jaudiotagger.tag.FieldKey; import java.io.File; -import java.io.FileFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -124,10 +123,14 @@ public class MusicUtil { @NonNull public static String getPlaylistInfoString(@NonNull final Context context, @NonNull List songs) { - final int songCount = songs.size(); - final String songString = songCount == 1 ? context.getResources().getString(R.string.song) : context.getResources().getString(R.string.songs); final long duration = getTotalDuration(context, songs); - return songCount + " " + songString + " • " + MusicUtil.getReadableDurationString(duration); + return MusicUtil.getSongCountString(context, songs.size()) + " • " + MusicUtil.getReadableDurationString(duration); + } + + @NonNull + public static String getSongCountString(@NonNull final Context context, int songCount) { + final String songString = songCount == 1 ? context.getResources().getString(R.string.song) : context.getResources().getString(R.string.songs); + return songCount + " " + songString; } public static long getTotalDuration(@NonNull final Context context, @NonNull List songs) { diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index fabc56f9..61e1d660 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -108,18 +108,18 @@ android:paddingStart="0dp"> @@ -138,18 +138,18 @@ android:paddingStart="0dp"> From 30c4b1844416080f1b3e4485577544ddb12ff5ac Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 13:54:46 +0200 Subject: [PATCH 07/15] Go to artist when clicking on the artist name in album page --- .../gramophone/ui/activities/AlbumDetailActivity.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index cc2759a8..6d1f0b7a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -166,6 +166,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setUpViews() { setUpRecyclerView(); setUpSongsAdapter(); + artistTextView.setOnClickListener(v -> { + if (album != null) { + NavigationUtil.goToArtist(AlbumDetailActivity.this, album.getArtistId()); + } + }); } private void loadAlbumCover() { From 76869888bb686086b476d4e4bf7c634849c7cf85 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 14:02:26 +0200 Subject: [PATCH 08/15] Normal transition when there are no shared elements. --- .../kabouzeid/gramophone/util/NavigationUtil.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java index 66950c72..32a21763 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java @@ -29,7 +29,11 @@ public class NavigationUtil { intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artistId); //noinspection unchecked - activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle()); + if (sharedElements != null && sharedElements.length > 0) { + activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle()); + } else { + activity.startActivity(intent); + } } public static void goToAlbum(@NonNull final Activity activity, final int albumId, @Nullable Pair... sharedElements) { @@ -37,7 +41,11 @@ public class NavigationUtil { intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, albumId); //noinspection unchecked - activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle()); + if (sharedElements != null && sharedElements.length > 0) { + activity.startActivity(intent, ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements).toBundle()); + } else { + activity.startActivity(intent); + } } public static void goToGenre(@NonNull final Activity activity, final Genre genre, @Nullable Pair... sharedElements) { From a13937fb394e80e89a51fcf61076b0fe6ca41b98 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 14:37:29 +0200 Subject: [PATCH 09/15] Display new album page a bit smaller in landscape. --- app/src/main/res/layout/activity_album_detail.xml | 8 ++++---- app/src/main/res/values-land/dimens.xml | 3 ++- app/src/main/res/values/dimens.xml | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml index 61e1d660..7f2d27c5 100644 --- a/app/src/main/res/layout/activity_album_detail.xml +++ b/app/src/main/res/layout/activity_album_detail.xml @@ -55,8 +55,8 @@ - 0dp + 144dp + 112dp 56dp 180dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 6292c780..e525347d 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,6 +3,7 @@ 16dp 176dp + 144dp 72dp 4dp 2dp From ec6fc07c481ac6318bcd70f4142cb78a71962282 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 14:59:49 +0200 Subject: [PATCH 10/15] Tablets display new album page at normal height landscape. --- app/src/main/res/values-sw600dp/dimens.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml index 7eb140f2..80ad83e9 100644 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -1,3 +1,5 @@ 600dp + 176dp + 144dp From 2de2cecd8587f249b277208de5f080c0b0be2e38 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 15:37:03 +0200 Subject: [PATCH 11/15] New artist page (same as new album page) --- .../ui/activities/AlbumDetailActivity.java | 10 +- .../ui/activities/ArtistDetailActivity.java | 116 ++++----- .../kabouzeid/gramophone/util/MusicUtil.java | 6 + .../main/res/drawable/ic_album_white_24dp.xml | 10 + .../res/layout/activity_artist_detail.xml | 228 +++++++++++++----- app/src/main/res/values-land/dimens.xml | 2 - .../main/res/values-sw600dp-land/dimens.xml | 4 +- app/src/main/res/values-sw600dp/dimens.xml | 1 - app/src/main/res/values/dimens.xml | 1 - 9 files changed, 244 insertions(+), 134 deletions(-) create mode 100644 app/src/main/res/drawable/ic_album_white_24dp.xml diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 6d1f0b7a..64cb5961 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -158,9 +158,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private void setUpObservableListViewParams() { toolbarColor = DialogUtils.resolveColor(this, R.attr.defaultFooterColor); headerViewHeight = getResources().getDimensionPixelSize(R.dimen.detail_header_height); - if (headerViewHeight == 0) { - albumArtImageView.setVisibility(View.GONE); - } } private void setUpViews() { @@ -230,12 +227,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setUpRecyclerViewPadding(); recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); - contentView.post(() -> { - observableScrollViewCallbacks.onScrollChanged(-(headerViewHeight), false, false); - // necessary to fix a bug - recyclerView.scrollBy(0, 1); - recyclerView.scrollBy(0, -1); - }); + contentView.post(() -> observableScrollViewCallbacks.onScrollChanged(-headerViewHeight, false, false)); } private void setUpRecyclerViewPadding() { 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 3791917f..09f7d89b 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 @@ -2,7 +2,7 @@ package com.kabouzeid.gramophone.ui.activities; import android.content.Context; import android.content.Intent; -import android.os.Build; +import android.graphics.PorterDuff; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -48,6 +48,7 @@ import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.CustomArtistImageUtil; +import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; @@ -73,27 +74,36 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement public static final String EXTRA_ARTIST_ID = "extra_artist_id"; - @BindView(R.id.image) - ImageView artistImage; - @BindView(R.id.list_background) - View songListBackground; @BindView(R.id.list) ObservableListView songListView; - @BindView(R.id.title) - TextView artistName; + @BindView(R.id.image) + ImageView artistImage; @BindView(R.id.toolbar) Toolbar toolbar; + @BindView(R.id.header) + View headerView; + @BindView(R.id.header_overlay) + View headerOverlay; + + @BindView(R.id.duration_icon) + ImageView durationIconImageView; + @BindView(R.id.song_count_icon) + ImageView songCountIconImageView; + @BindView(R.id.album_count_icon) + ImageView albumCountIconImageView; + @BindView(R.id.duration_text) + TextView durationTextView; + @BindView(R.id.song_count_text) + TextView songCountTextView; + @BindView(R.id.album_count_text) + TextView albumCountTextView; View songListHeader; RecyclerView albumRecyclerView; private MaterialCab cab; - private int headerOffset; - private int titleViewHeight; - private int artistImageViewHeight; + private int headerViewHeight; private int toolbarColor; - private float toolbarAlpha; - private boolean usePalette; private Artist artist; @Nullable @@ -105,6 +115,21 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private LastFMRestClient lastFMRestClient; private boolean forceDownload; + private final SimpleObservableScrollViewCallbacks observableScrollViewCallbacks = new SimpleObservableScrollViewCallbacks() { + @Override + public void onScrollChanged(int scrollY, boolean b, boolean b2) { + scrollY += headerViewHeight; + + // Change alpha of overlay + float headerAlpha = Math.max(0, Math.min(1, (float) 2 * scrollY / headerViewHeight)); + headerOverlay.setBackgroundColor(ColorUtil.withAlpha(toolbarColor, headerAlpha)); + + // Translate name text + headerView.setTranslationY(Math.max(-scrollY, -headerViewHeight)); + headerOverlay.setTranslationY(Math.max(-scrollY, -headerViewHeight)); + artistImage.setTranslationY(Math.max(-scrollY, -headerViewHeight)); + } + }; @Override protected void onCreate(Bundle savedInstanceState) { @@ -130,41 +155,11 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement return wrapSlidingMusicPanel(R.layout.activity_artist_detail); } - private final SimpleObservableScrollViewCallbacks observableScrollViewCallbacks = new SimpleObservableScrollViewCallbacks() { - @Override - public void onScrollChanged(int scrollY, boolean b, boolean b2) { - scrollY += artistImageViewHeight + titleViewHeight; - float flexibleRange = artistImageViewHeight - headerOffset; - - // Translate album cover - artistImage.setTranslationY(Math.max(-artistImageViewHeight, -scrollY / 2)); - - // Translate list background - songListBackground.setTranslationY(Math.max(0, -scrollY + artistImageViewHeight)); - - // Change alpha of overlay - toolbarAlpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange)); - toolbar.setBackgroundColor(ColorUtil.withAlpha(toolbarColor, toolbarAlpha)); - setStatusbarColor(ColorUtil.withAlpha(toolbarColor, cab != null && cab.isActive() ? 1 : toolbarAlpha)); - - // Translate name text - int maxTitleTranslationY = artistImageViewHeight; - int titleTranslationY = maxTitleTranslationY - scrollY; - titleTranslationY = Math.max(headerOffset, titleTranslationY); - - artistName.setTranslationY(titleTranslationY); - } - }; + private boolean usePalette; private void setUpObservableListViewParams() { - artistImageViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height); toolbarColor = DialogUtils.resolveColor(this, R.attr.defaultFooterColor); - int toolbarHeight = Util.getActionBarSize(this); - titleViewHeight = getResources().getDimensionPixelSize(R.dimen.title_view_height); - headerOffset = toolbarHeight; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - headerOffset += getResources().getDimensionPixelSize(R.dimen.status_bar_padding); - } + headerViewHeight = getResources().getDimensionPixelSize(R.dimen.detail_header_height); } private void initViews() { @@ -186,14 +181,11 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement songListView.setAdapter(songAdapter); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); - contentView.post(() -> { - songListBackground.getLayoutParams().height = contentView.getHeight(); - observableScrollViewCallbacks.onScrollChanged(-(artistImageViewHeight + titleViewHeight), false, false); - }); + contentView.post(() -> observableScrollViewCallbacks.onScrollChanged(-headerViewHeight, false, false)); } private void setUpSongListPadding() { - songListView.setPadding(0, artistImageViewHeight + titleViewHeight, 0, 0); + songListView.setPadding(0, headerViewHeight, 0, 0); } private void setUpAlbumRecyclerView() { @@ -301,10 +293,22 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setColors(int color) { toolbarColor = color; - artistName.setBackgroundColor(color); - artistName.setTextColor(MaterialValueHelper.getPrimaryTextColor(this, ColorUtil.isColorLight(color))); + headerView.setBackgroundColor(color); + setNavigationbarColor(color); setTaskDescriptionColor(color); + + toolbar.setBackgroundColor(color); + setSupportActionBar(toolbar); // needed to auto readjust the toolbar content color + setStatusbarColor(color); + + int secondaryTextColor = MaterialValueHelper.getSecondaryTextColor(this, ColorUtil.isColorLight(color)); + durationIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + songCountIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + albumCountIconImageView.setColorFilter(secondaryTextColor, PorterDuff.Mode.SRC_IN); + durationTextView.setTextColor(secondaryTextColor); + songCountTextView.setTextColor(secondaryTextColor); + albumCountTextView.setTextColor(secondaryTextColor); } private void setUpToolbar() { @@ -318,7 +322,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_artist_detail, menu); menu.findItem(R.id.action_colored_footers).setChecked(usePalette); - return true; + return super.onCreateOptionsMenu(menu); } @Override @@ -395,7 +399,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement .start(new MaterialCab.Callback() { @Override public boolean onCabCreated(MaterialCab materialCab, Menu menu) { - setStatusbarColor(ColorUtil.stripAlpha(toolbarColor)); return callback.onCabCreated(materialCab, menu); } @@ -406,7 +409,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement @Override public boolean onCabFinished(MaterialCab materialCab) { - setStatusbarColor(ColorUtil.withAlpha(toolbarColor, toolbarAlpha)); return callback.onCabFinished(materialCab); } }); @@ -442,7 +444,11 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement loadBiography(); } - artistName.setText(artist.getName()); + getSupportActionBar().setTitle(artist.getName()); + songCountTextView.setText(MusicUtil.getSongCountString(this, artist.getSongCount())); + albumCountTextView.setText(MusicUtil.getAlbumCountString(this, artist.getAlbumCount())); + durationTextView.setText(MusicUtil.getReadableDurationString(MusicUtil.getTotalDuration(this, artist.getSongs()))); + songAdapter.swapDataSet(artist.getSongs()); albumAdapter.swapDataSet(artist.albums); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index 4ec9ed83..03fc90e1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -133,6 +133,12 @@ public class MusicUtil { return songCount + " " + songString; } + @NonNull + public static String getAlbumCountString(@NonNull final Context context, int albumCount) { + final String albumString = albumCount == 1 ? context.getResources().getString(R.string.album) : context.getResources().getString(R.string.albums); + return albumCount + " " + albumString; + } + public static long getTotalDuration(@NonNull final Context context, @NonNull List songs) { long duration = 0; for (int i = 0; i < songs.size(); i++) { diff --git a/app/src/main/res/drawable/ic_album_white_24dp.xml b/app/src/main/res/drawable/ic_album_white_24dp.xml new file mode 100644 index 00000000..6aa0cec6 --- /dev/null +++ b/app/src/main/res/drawable/ic_album_white_24dp.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/layout/activity_artist_detail.xml b/app/src/main/res/layout/activity_artist_detail.xml index 4d1828c0..22787fc5 100644 --- a/app/src/main/res/layout/activity_artist_detail.xml +++ b/app/src/main/res/layout/activity_artist_detail.xml @@ -1,86 +1,188 @@ - + + android:layout_height="match_parent" + android:orientation="vertical"> - + - + android:elevation="@dimen/toolbar_elevation" + tools:ignore="UnusedAttribute"> - - - - - - - - + - + - + android:layout_height="match_parent"> - + + android:orientation="vertical"> - - - + android:layout_height="@dimen/detail_header_height" + android:background="?attr/defaultFooterColor" + android:elevation="@dimen/toolbar_elevation" + android:orientation="horizontal" + tools:ignore="UnusedAttribute"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml index 4da3d3d8..c460f0bd 100644 --- a/app/src/main/res/values-land/dimens.xml +++ b/app/src/main/res/values-land/dimens.xml @@ -3,8 +3,6 @@ 112dp 56dp - 180dp - 72dp diff --git a/app/src/main/res/values-sw600dp-land/dimens.xml b/app/src/main/res/values-sw600dp-land/dimens.xml index a0a6d8b4..a6b3daec 100644 --- a/app/src/main/res/values-sw600dp-land/dimens.xml +++ b/app/src/main/res/values-sw600dp-land/dimens.xml @@ -1,4 +1,2 @@ - - 420dp - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml index 80ad83e9..355d33ff 100644 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -1,5 +1,4 @@ - 600dp 176dp 144dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e525347d..4e4c5da8 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -11,7 +11,6 @@ 168dp - 360dp 20dp 120dp 104dp From aedf19c08deeb63074b0ca62189a24b5f0267561 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sat, 28 Apr 2018 16:11:26 +0200 Subject: [PATCH 12/15] Add Adrian to the about page --- .../ui/activities/AboutActivity.java | 13 ++++ .../main/res/layout/card_special_thanks.xml | 59 +++++++++++++++++++ app/src/main/res/values/donottranslate.xml | 2 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 75 insertions(+) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java index 02d4944f..990717aa 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java @@ -56,6 +56,9 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen private static String EUGENE_CHEUNG_GITHUB = "https://github.com/arkon"; private static String EUGENE_CHEUNG_WEBSITE = "https://echeung.me/"; + private static String ADRIAN_TWITTER = "https://twitter.com/froschgames"; + private static String ADRIAN_WEBSITE = "https://froschgames.com/"; + @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.app_version) @@ -102,6 +105,10 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen AppCompatButton eugeneCheungGitHub; @BindView(R.id.eugene_cheung_website) AppCompatButton eugeneCheungWebsite; + @BindView(R.id.adrian_twitter) + AppCompatButton adrianTwitter; + @BindView(R.id.adrian_website) + AppCompatButton adrianWebsite; @Override protected void onCreate(Bundle savedInstanceState) { @@ -156,6 +163,8 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen aleksandarTesicGooglePlus.setOnClickListener(this); eugeneCheungGitHub.setOnClickListener(this); eugeneCheungWebsite.setOnClickListener(this); + adrianTwitter.setOnClickListener(this); + adrianWebsite.setOnClickListener(this); } @Override @@ -228,6 +237,10 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen openUrl(EUGENE_CHEUNG_GITHUB); } else if (v == eugeneCheungWebsite) { openUrl(EUGENE_CHEUNG_WEBSITE); + } else if (v == adrianTwitter) { + openUrl(ADRIAN_TWITTER); + } else if (v == adrianWebsite) { + openUrl(ADRIAN_WEBSITE); } } diff --git a/app/src/main/res/layout/card_special_thanks.xml b/app/src/main/res/layout/card_special_thanks.xml index 0136d4ac..179cabc1 100644 --- a/app/src/main/res/layout/card_special_thanks.xml +++ b/app/src/main/res/layout/card_special_thanks.xml @@ -299,6 +299,65 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 09f3d1e1..a589501a 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -8,11 +8,13 @@ Michael Cook (Cookicons) Aleksandar Tešić Eugene Cheung + Adrian Aachen, Germany Google Plus GitHub + Twitter Card Flat diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 08b52471..5b6dc6c5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -282,6 +282,7 @@ Restore No purchase found. For his contributions to the source code. + For creating the album page design. Add Blacklist Remove from blacklist From da80eaf34480c6ab9238874e403e3b797f049618 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 29 Apr 2018 13:49:39 +0200 Subject: [PATCH 13/15] Bump build version --- app/build.gradle | 4 ++-- app/src/main/assets/phonograph-changelog.html | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8baf292c..11e0405f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,8 +51,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId 'com.kabouzeid.gramophone' - versionCode 156 - versionName '1.0.0 BETA 1' + versionCode 157 + versionName '1.0.0 BETA 2' } buildTypes { release { diff --git a/app/src/main/assets/phonograph-changelog.html b/app/src/main/assets/phonograph-changelog.html index 0b88f839..72c330ef 100644 --- a/app/src/main/assets/phonograph-changelog.html +++ b/app/src/main/assets/phonograph-changelog.html @@ -26,9 +26,15 @@

    You can view the changelog dialog again at any time from the about section.

    +

    We are coming closer to the first final release!

    + +

    Version 1.0.0 BETA 2

    +
      +
    1. NEW: Artist page redesign
    2. +
    3. IMPROVEMENT: Improved the look of the new album page
    4. +

    Version 1.0.0 BETA 1

    -

    We are coming closer to the first final release!

    1. NEW: Album page redesign
    From 005fd71276837bb6d3764f5d0c423a3374d766b4 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 29 Apr 2018 21:48:31 +0200 Subject: [PATCH 14/15] Show default color when opening album/artist and image doesn't load fast enough --- .../ui/activities/AlbumDetailActivity.java | 21 +------------------ .../ui/activities/ArtistDetailActivity.java | 7 ++----- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 64cb5961..1bbc1ea2 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -24,8 +24,6 @@ import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.target.Target; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -36,7 +34,6 @@ import com.kabouzeid.gramophone.dialogs.DeleteSongsDialog; import com.kabouzeid.gramophone.dialogs.SleepTimerDialog; import com.kabouzeid.gramophone.glide.PhonographColoredTarget; import com.kabouzeid.gramophone.glide.SongGlideRequest; -import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.LoaderIds; @@ -123,8 +120,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setDrawUnderStatusbar(true); ButterKnife.bind(this); - supportPostponeEnterTransition(); - lastFMRestClient = new LastFMRestClient(this); setUpObservableListViewParams(); @@ -156,7 +151,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements }; private void setUpObservableListViewParams() { - toolbarColor = DialogUtils.resolveColor(this, R.attr.defaultFooterColor); headerViewHeight = getResources().getDimensionPixelSize(R.dimen.detail_header_height); } @@ -168,6 +162,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements NavigationUtil.goToArtist(AlbumDetailActivity.this, album.getArtistId()); } }); + setColors(DialogUtils.resolveColor(this, R.attr.defaultFooterColor)); } private void loadAlbumCover() { @@ -175,19 +170,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements .checkIgnoreMediaStore(this) .generatePalette(this).build() .dontAnimate() - .listener(new RequestListener() { - @Override - public boolean onException(Exception e, Object model, Target target, boolean isFirstResource) { - supportStartPostponedEnterTransition(); - return false; - } - - @Override - public boolean onResourceReady(BitmapPaletteWrapper resource, Object model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { - supportStartPostponedEnterTransition(); - return false; - } - }) .into(new PhonographColoredTarget(albumArtImageView) { @Override public void onColorReady(int color) { @@ -453,7 +435,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements @Override public void onLoadFinished(Loader loader, Album data) { - supportStartPostponedEnterTransition(); setAlbum(data); } 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 09f7d89b..7d44e7a4 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 @@ -137,15 +137,13 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement setDrawUnderStatusbar(true); ButterKnife.bind(this); - supportPostponeEnterTransition(); - lastFMRestClient = new LastFMRestClient(this); usePalette = PreferenceUtil.getInstance(this).albumArtistColoredFooters(); initViews(); setUpObservableListViewParams(); - setUpViews(); setUpToolbar(); + setUpViews(); getSupportLoaderManager().initLoader(LOADER_ID, getIntent().getExtras(), this); } @@ -158,7 +156,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private boolean usePalette; private void setUpObservableListViewParams() { - toolbarColor = DialogUtils.resolveColor(this, R.attr.defaultFooterColor); headerViewHeight = getResources().getDimensionPixelSize(R.dimen.detail_header_height); } @@ -170,6 +167,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setUpViews() { setUpSongListView(); setUpAlbumRecyclerView(); + setColors(DialogUtils.resolveColor(this, R.attr.defaultFooterColor)); } private void setUpSongListView() { @@ -465,7 +463,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement @Override public void onLoadFinished(Loader loader, Artist data) { - supportStartPostponedEnterTransition(); setArtist(data); } From 0fe83c46b2b5a58026f533b7ca46fbdd7d6734a2 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 29 Apr 2018 21:53:36 +0200 Subject: [PATCH 15/15] Artist show albums before songs --- app/src/main/res/layout/activity_artist_detail.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/layout/activity_artist_detail.xml b/app/src/main/res/layout/activity_artist_detail.xml index 22787fc5..b9983983 100644 --- a/app/src/main/res/layout/activity_artist_detail.xml +++ b/app/src/main/res/layout/activity_artist_detail.xml @@ -78,18 +78,18 @@ android:paddingStart="0dp"> @@ -108,18 +108,18 @@ android:paddingStart="0dp">