diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java index 952b4830..ae3eba95 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.Intent; import android.support.v7.widget.Toolbar; import android.view.MenuItem; +import android.view.View; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; @@ -24,10 +25,12 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen public static final String TAG = AbsPlayerFragment.class.getSimpleName(); private Callbacks callbacks; + private boolean isToolbarVisible; @Override public void onAttach(Context context) { super.onAttach(context); + isToolbarVisible = true; try { callbacks = (Callbacks) context; } catch (ClassCastException e) { @@ -88,6 +91,23 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen MusicUtil.toggleFavorite(getActivity(), song); } + protected void toggleToolbar(final View toolbar) { + if (toolbar == null) return; + + isToolbarVisible = !isToolbarVisible; + if (isToolbarVisible) { + toolbar.setVisibility(View.VISIBLE); + toolbar.animate().alpha(1f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); + } else { + toolbar.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(new Runnable() { + @Override + public void run() { + toolbar.setVisibility(View.GONE); + } + }); + } + } + protected String getUpNextAndQueueTime() { return getResources().getString(R.string.up_next) + " • " + MusicUtil.getReadableDurationString(MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.getPosition())); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java index 60cf18e3..51471e4e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java @@ -35,7 +35,7 @@ import butterknife.Unbinder; public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements ViewPager.OnPageChangeListener, MusicProgressViewUpdateHelper.Callback { public static final String TAG = PlayerAlbumCoverFragment.class.getSimpleName(); - public static final int LYRICS_ANIM_DURATION = 300; + public static final int VISIBILITY_ANIM_DURATION = 300; private Unbinder unbinder; @@ -71,6 +71,15 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements viewPager.addOnPageChangeListener(this); viewPager.setOnTouchListener(new View.OnTouchListener() { GestureDetector gestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + if (callbacks != null) { + callbacks.onToolbarToggled(); + return true; + } + return super.onSingleTapConfirmed(e); + } + @Override public boolean onDoubleTap(MotionEvent e) { if (callbacks != null) { @@ -121,7 +130,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - } @Override @@ -144,7 +152,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements @Override public void onPageScrollStateChanged(int state) { - } public void showHeartAnimation() { @@ -193,7 +200,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements } private void hideLyricsLayout() { - lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION).withEndAction(new Runnable() { + lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(new Runnable() { @Override public void run() { if (!isLyricsLayoutBound()) return; @@ -218,7 +225,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements lyricsLine2.setText(null); lyricsLayout.setVisibility(View.VISIBLE); - lyricsLayout.animate().alpha(1f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION); + lyricsLayout.animate().alpha(1f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); } private void notifyColorChange(int color) { @@ -259,11 +266,11 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements lyricsLine1.setAlpha(1f); lyricsLine1.setTranslationY(0f); - lyricsLine1.animate().alpha(0f).translationY(-h).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION); + lyricsLine1.animate().alpha(0f).translationY(-h).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); lyricsLine2.setAlpha(0f); lyricsLine2.setTranslationY(h); - lyricsLine2.animate().alpha(1f).translationY(0f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION); + lyricsLine2.animate().alpha(1f).translationY(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION); } } @@ -271,5 +278,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements void onColorChanged(int color); void onFavoriteToggled(); + + void onToolbarToggled(); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java index c939bf1d..87f9079d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java @@ -10,6 +10,7 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.annotation.ColorInt; +import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.CardView; import android.support.v7.widget.LinearLayoutManager; @@ -23,6 +24,7 @@ import android.view.View; import android.view.ViewAnimationUtils; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -61,6 +63,9 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private Unbinder unbinder; + @Nullable + @BindView(R.id.toolbar_container) + FrameLayout toolbarContainer; @BindView(R.id.player_toolbar) Toolbar toolbar; @BindView(R.id.player_sliding_layout) @@ -267,7 +272,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum layoutManager.scrollToPositionWithOffset(MusicPlayerRemote.getPosition() + 1, 0); } - private void updateIsFavorite() { if (updateIsFavoriteTask != null) updateIsFavoriteTask.cancel(false); updateIsFavoriteTask = new AsyncTask() { @@ -403,6 +407,11 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum toggleFavorite(MusicPlayerRemote.getCurrentSong()); } + @Override + public void onToolbarToggled() { + toggleToolbar(toolbarContainer); + } + @Override public void onPanelSlide(View view, float slide) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java index 16adf455..7a260d05 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java @@ -21,6 +21,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -61,6 +62,9 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum @BindView(R.id.player_status_bar) View playerStatusBar; + @Nullable + @BindView(R.id.toolbar_container) + FrameLayout toolbarContainer; @BindView(R.id.player_toolbar) Toolbar toolbar; @Nullable @@ -263,7 +267,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum layoutManager.scrollToPositionWithOffset(MusicPlayerRemote.getPosition() + 1, 0); } - private void updateIsFavorite() { if (updateIsFavoriteTask != null) updateIsFavoriteTask.cancel(false); updateIsFavoriteTask = new AsyncTask() { @@ -399,6 +402,11 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum toggleFavorite(MusicPlayerRemote.getCurrentSong()); } + @Override + public void onToolbarToggled() { + toggleToolbar(toolbarContainer); + } + @Override public void onPanelSlide(View view, float slide) { } diff --git a/app/src/main/res/drawable/toolbar_gradient.xml b/app/src/main/res/drawable/toolbar_gradient.xml new file mode 100644 index 00000000..16bf8f38 --- /dev/null +++ b/app/src/main/res/drawable/toolbar_gradient.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_card_player.xml b/app/src/main/res/layout/fragment_card_player.xml index 1320f0fc..66781035 100644 --- a/app/src/main/res/layout/fragment_card_player.xml +++ b/app/src/main/res/layout/fragment_card_player.xml @@ -58,13 +58,21 @@ - + - + + + + + diff --git a/app/src/main/res/layout/fragment_flat_player.xml b/app/src/main/res/layout/fragment_flat_player.xml index 0c0a4f61..0d84e5ea 100644 --- a/app/src/main/res/layout/fragment_flat_player.xml +++ b/app/src/main/res/layout/fragment_flat_player.xml @@ -56,12 +56,18 @@ - + - + + + diff --git a/app/src/main/res/layout/navigation_drawer_header.xml b/app/src/main/res/layout/navigation_drawer_header.xml index 523e5fd7..8e77bef6 100644 --- a/app/src/main/res/layout/navigation_drawer_header.xml +++ b/app/src/main/res/layout/navigation_drawer_header.xml @@ -19,7 +19,7 @@ diff --git a/app/src/main/res/layout/shadow_statusbar_toolbar.xml b/app/src/main/res/layout/shadow_statusbar_toolbar.xml index 25be7e12..17f3e0e5 100644 --- a/app/src/main/res/layout/shadow_statusbar_toolbar.xml +++ b/app/src/main/res/layout/shadow_statusbar_toolbar.xml @@ -22,9 +22,9 @@ + android:background="@drawable/toolbar_gradient" /> \ No newline at end of file diff --git a/app/src/main/res/layout/shadow_toolbar.xml b/app/src/main/res/layout/shadow_toolbar.xml deleted file mode 100644 index 80eed90f..00000000 --- a/app/src/main/res/layout/shadow_toolbar.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index bf20dbcd..28ff9a4e 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,6 +1,7 @@ #34000000 + #54000000 #607d8b #f5f5f5 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index f244bae2..25f0dda9 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,6 +6,9 @@ 4dp 2dp + + 168dp + 360dp 20dp 120dp