From 234b8d4a6a9e00477006671e56703b679576e3e0 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Fri, 4 Dec 2015 15:24:07 +0100 Subject: [PATCH] Added better transitions for now playing screen. Also added some dummy views to test the new look. --- .../ui/fragments/player/PlayerFragment.java | 37 ++++++++++++++++++- app/src/main/res/layout/fragment_player.xml | 31 +++++++++++++--- .../layout/fragment_player_album_cover.xml | 4 +- 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java index 9b0b2e8c..b36c67d4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java @@ -1,5 +1,7 @@ package com.kabouzeid.gramophone.ui.fragments.player; +import android.animation.Animator; +import android.animation.AnimatorSet; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -17,9 +19,12 @@ import android.view.View; import android.view.ViewAnimationUtils; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.widget.ImageView; import android.widget.RelativeLayout; +import android.widget.TextView; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.song.SongAdapter; import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; import com.kabouzeid.gramophone.dialogs.PlayingQueueDialog; @@ -36,6 +41,7 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.AbsTagEditorActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; +import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.Util; @@ -66,6 +72,13 @@ public class PlayerFragment extends Fragment implements MusicServiceEventListene @Bind(R.id.color_background) View colorBackground; + @Bind(R.id.player_queue_subheader) + TextView playerQueueSubheader; + + @Bind(R.id.current_song) + View currentSong; + MediaEntryViewHolder mediaEntryViewHolder; + private int lastColor; private AbsMusicServiceActivity activity; @@ -136,6 +149,16 @@ public class PlayerFragment extends Fragment implements MusicServiceEventListene }); activity.addMusicServiceEventListener(this); + + mediaEntryViewHolder = new MediaEntryViewHolder(currentSong) { + }; + + mediaEntryViewHolder.separator.setVisibility(View.VISIBLE); + mediaEntryViewHolder.shortSeparator.setVisibility(View.GONE); + mediaEntryViewHolder.title.setText("When I'm Gone"); + mediaEntryViewHolder.text.setText("Eminem"); + mediaEntryViewHolder.image.setScaleType(ImageView.ScaleType.CENTER); + mediaEntryViewHolder.image.setImageDrawable(Util.getTintedDrawable(activity, R.drawable.ic_volume_up_white_24dp, ColorUtil.resolveColor(activity, R.attr.icon_color))); } @Override @@ -218,15 +241,25 @@ public class PlayerFragment extends Fragment implements MusicServiceEventListene @SuppressWarnings("ConstantConditions") private void animateColorChange(final int newColor) { + slidingUpPanelLayout.setBackgroundColor(lastColor); + Animator backgroundAnimator; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int x = (int) (playbackControlsFragment.playPauseFab.getX() + playbackControlsFragment.playPauseFab.getWidth() / 2 + playbackControlsFragment.getView().getX()); int y = (int) (playbackControlsFragment.playPauseFab.getY() + playbackControlsFragment.playPauseFab.getHeight() / 2 + playbackControlsFragment.getView().getY()); float startRadius = 0; float endRadius = Math.max(colorBackground.getWidth(), colorBackground.getHeight()); - slidingUpPanelLayout.setBackgroundColor(lastColor); colorBackground.setBackgroundColor(newColor); - ViewAnimationUtils.createCircularReveal(colorBackground, x, y, startRadius, endRadius).setDuration(1000).start(); + backgroundAnimator = ViewAnimationUtils.createCircularReveal(colorBackground, x, y, startRadius, endRadius); + } else { + backgroundAnimator = ViewUtil.createBackgroundColorTransition(colorBackground, lastColor, newColor); } + + Animator subHeaderAnimator = ViewUtil.createTextColorTransition(playerQueueSubheader, lastColor, newColor); + + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether(backgroundAnimator, subHeaderAnimator); + animatorSet.setDuration(1000).start(); + lastColor = newColor; } diff --git a/app/src/main/res/layout/fragment_player.xml b/app/src/main/res/layout/fragment_player.xml index d56e13c7..ceec1f32 100644 --- a/app/src/main/res/layout/fragment_player.xml +++ b/app/src/main/res/layout/fragment_player.xml @@ -1,9 +1,8 @@ - - + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + + + diff --git a/app/src/main/res/layout/fragment_player_album_cover.xml b/app/src/main/res/layout/fragment_player_album_cover.xml index 7c52bfd8..2fcc9d44 100644 --- a/app/src/main/res/layout/fragment_player_album_cover.xml +++ b/app/src/main/res/layout/fragment_player_album_cover.xml @@ -1,8 +1,8 @@