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 1c2fcd65..7d827f16 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 @@ -21,7 +21,6 @@ import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.loader.AlbumSongLoader; import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; @@ -219,8 +218,6 @@ public class AlbumAdapter extends AbsMultiSelectAdapter implements MaterialCab Pair[] albumPairs = new Pair[]{ Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_art)) }; - if (activity instanceof AbsSlidingMusicPanelActivity) - albumPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews(albumPairs); NavigationUtil.goToAlbum(activity, song.albumId, albumPairs); return true; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SmartPlaylistSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SmartPlaylistSongAdapter.java index f99f7297..b81e16ad 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SmartPlaylistSongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SmartPlaylistSongAdapter.java @@ -11,7 +11,6 @@ import android.view.View; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.NavigationUtil; import java.util.ArrayList; @@ -54,8 +53,6 @@ public class SmartPlaylistSongAdapter extends SongAdapter { Pair[] albumPairs = new Pair[]{ Pair.create(image, activity.getString(R.string.transition_album_art)) }; - if (activity instanceof AbsSlidingMusicPanelActivity) - albumPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews(albumPairs); NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).albumId, albumPairs); return true; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java index c8528abd..ce4c39b2 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java @@ -21,7 +21,6 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.menu.SongMenuHelper; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; @@ -237,8 +236,6 @@ public class SongAdapter extends AbsMultiSelectAdapter= Build.VERSION_CODES.LOLLIPOP) { if (mediaControllerContainer.getVisibility() == View.INVISIBLE) { - int cx = (dummyFab.getLeft() + dummyFab.getRight()) / 2; - int cy = (dummyFab.getTop() + dummyFab.getBottom()) / 2; + int cx = (playerPlayPauseFab.getLeft() + playerPlayPauseFab.getRight()) / 2; + int cy = (playerPlayPauseFab.getTop() + playerPlayPauseFab.getBottom()) / 2; int finalRadius = Math.max(mediaControllerContainer.getWidth(), mediaControllerContainer.getHeight()); - final Animator animator = ViewAnimationUtils.createCircularReveal(mediaControllerContainer, cx, cy, dummyFab.getWidth() / 2, finalRadius); + final Animator animator = ViewAnimationUtils.createCircularReveal(mediaControllerContainer, cx, cy, playerPlayPauseFab.getWidth() / 2, finalRadius); animator.setInterpolator(new DecelerateInterpolator()); animator.setDuration(FAB_CIRCULAR_REVEAL_ANIMATION_TIME); animator.start(); @@ -463,29 +434,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi private void setMiniPlayerAlphaProgress(@FloatRange(from = 0, to = 1) float progress) { float alpha = 1 - progress; miniPlayer.setAlpha(alpha); + // necessary to make the views below clickable miniPlayer.setVisibility(alpha == 0 ? View.GONE : View.VISIBLE); } - private void setFabPositionProgress(@FloatRange(from = 0, to = 1) float progress) { - float newXTranslation = (dummyFab.getX() + mediaControllerContainer.getX() + footerFrame.getX() - playPauseButton.getLeft()) * progress; - float newYTranslation = (dummyFab.getY() + mediaControllerContainer.getY() + footerFrame.getY() - playPauseButton.getTop()) * progress; - - playPauseButton.setTranslationX(newXTranslation); - playPauseButton.setTranslationY(newYTranslation); - } - - private void setFabColorProgress(@FloatRange(from = 0, to = 1) float progress) { - int startColor = getThemeColorAccent(); - int endColor; - if (colorPlaybackControls) { - endColor = lastPlaybackControlsColor; - } else { - endColor = startColor; - } - int newFabColor = (int) argbEvaluator.evaluate(progress, startColor, endColor); - FloatingActionButtonProperties.COLOR.set(playPauseButton, newFabColor); - } - private void toggleSlidingPanel() { if (slidingUpPanelLayout.getPanelState() != SlidingUpPanelLayout.PanelState.EXPANDED) { slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); @@ -520,7 +472,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi return getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity) - slidingUpPanelLayout.getPanelHeight(); } - protected void updateFabState(boolean animate) { + protected void updatePlayPauseDrawableState(boolean animate) { if (playPauseDrawable == null) { playPauseDrawable = new PlayPauseDrawable(this); } @@ -531,22 +483,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi } } - public final Pair[] addPlayPauseFabToSharedViews(@Nullable final Pair... sharedElements) { - Pair[] sharedViewsWithFab; - if (sharedElements != null) { - sharedViewsWithFab = new Pair[sharedElements.length + 1]; - System.arraycopy(sharedElements, 0, sharedViewsWithFab, 0, sharedElements.length); - } else { - sharedViewsWithFab = new Pair[1]; - } - sharedViewsWithFab[sharedViewsWithFab.length - 1] = Pair.create((View) playPauseButton, getString(R.string.transition_fab)); - return sharedViewsWithFab; - } - @Override public void onPlayStateChanged() { super.onPlayStateChanged(); - updateFabState(true); + updatePlayPauseDrawableState(true); } protected View wrapSlidingMusicPanelAndFab(@LayoutRes int resId) { @@ -850,23 +790,13 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi } private void updateCurrentSong() { - hideBottomBarIfQueueIsEmpty(); + hideBottomBar(MusicPlayerRemote.getPlayingQueue().isEmpty()); getCurrentSong(); updateMiniPlayerAndHeaderText(); setUpAlbumArtAndApplyPalette(); updatePlayerMenu(); } - private void hideBottomBarIfQueueIsEmpty() { - if (MusicPlayerRemote.getPlayingQueue().isEmpty()) { - playPauseButton.setVisibility(View.GONE); - hideBottomBar(true); - } else { - playPauseButton.setVisibility(View.VISIBLE); - hideBottomBar(PreferenceUtil.getInstance(this).hideBottomBar()); - } - } - private void getCurrentSong() { song = MusicPlayerRemote.getCurrentSong(); } @@ -991,7 +921,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi updateRepeatState(); updateShuffleState(); setUpProgressSliderTint(); - setUpPlayPauseButtonTint(); + setUpPlayerPlayPauseFabTint(); } }); @@ -1098,10 +1028,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi SongDetailDialog.create(song).show(getSupportFragmentManager(), "SONG_DETAIL"); return true; case R.id.action_go_to_album: - NavigationUtil.goToAlbum(this, song.albumId, addPlayPauseFabToSharedViews()); + NavigationUtil.goToAlbum(this, song.albumId); return true; case R.id.action_go_to_artist: - NavigationUtil.goToArtist(this, song.artistId, addPlayPauseFabToSharedViews()); + NavigationUtil.goToArtist(this, song.artistId); return true; } return false; diff --git a/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_up_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_up_white_24dp.png new file mode 100644 index 00000000..a0861f59 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_up_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_keyboard_arrow_up_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_keyboard_arrow_up_white_24dp.png new file mode 100644 index 00000000..c735c8ca Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_keyboard_arrow_up_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_up_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_up_white_24dp.png new file mode 100644 index 00000000..0008f33b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_keyboard_arrow_up_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_up_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_up_white_24dp.png new file mode 100644 index 00000000..c079c59c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_up_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_up_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_up_white_24dp.png new file mode 100644 index 00000000..27403f79 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_up_white_24dp.png differ diff --git a/app/src/main/res/layout/mini_player.xml b/app/src/main/res/layout/mini_player.xml index 3beb49e4..b7c18ffc 100644 --- a/app/src/main/res/layout/mini_player.xml +++ b/app/src/main/res/layout/mini_player.xml @@ -1,35 +1,40 @@ - + android:focusable="false" + android:orientation="horizontal"> - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/player.xml b/app/src/main/res/layout/player.xml index 1b7e6e00..5d203895 100644 --- a/app/src/main/res/layout/player.xml +++ b/app/src/main/res/layout/player.xml @@ -176,11 +176,9 @@ android:src="@drawable/ic_shuffle_white_36dp" /> + android:layout_centerInParent="true" /> diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index 68f69535..de5be9bc 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -1,46 +1,31 @@ - + android:layout_height="match_parent" + android:gravity="bottom" + sothree:umanoDragView="@+id/player_container" + sothree:umanoPanelHeight="@dimen/mini_player_height" + sothree:umanoParalaxOffset="0dp" + sothree:umanoShadowHeight="@dimen/card_elevation"> - + + + android:background="?android:colorBackground" + android:clickable="true" + android:focusable="false"> - + - + - + - - - - - - - - - \ No newline at end of file + \ No newline at end of file