Ignore. Not working work in progress commit.

This commit is contained in:
Karim Abou Zeid 2015-10-11 18:54:59 +02:00
commit 0ade999094
17 changed files with 93 additions and 200 deletions

View file

@ -21,7 +21,6 @@ import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.loader.AlbumSongLoader; import com.kabouzeid.gramophone.loader.AlbumSongLoader;
import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Album;
import com.kabouzeid.gramophone.model.Song; 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.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
@ -219,8 +218,6 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
Pair.create(image, Pair.create(image,
activity.getResources().getString(R.string.transition_album_art) activity.getResources().getString(R.string.transition_album_art)
)}; )};
if (activity instanceof AbsSlidingMusicPanelActivity)
albumPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews(albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).id, albumPairs); NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).id, albumPairs);
} }
} }

View file

@ -21,7 +21,6 @@ import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.loader.ArtistSongLoader; import com.kabouzeid.gramophone.loader.ArtistSongLoader;
import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Artist;
import com.kabouzeid.gramophone.model.Song; 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.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
@ -208,8 +207,6 @@ public class ArtistAdapter extends AbsMultiSelectAdapter<ArtistAdapter.ViewHolde
Pair.create(image, Pair.create(image,
activity.getResources().getString(R.string.transition_artist_image) activity.getResources().getString(R.string.transition_artist_image)
)}; )};
if (activity instanceof AbsSlidingMusicPanelActivity)
artistPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews(artistPairs);
NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).id, artistPairs); NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).id, artistPairs);
} }
} }

View file

@ -22,7 +22,6 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper; import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.DisplayImageOptions;
@ -106,8 +105,6 @@ public class ArtistSongAdapter extends ArrayAdapter<Song> implements MaterialCab
Pair[] albumPairs = new Pair[]{ Pair[] albumPairs = new Pair[]{
Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_art)) 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); NavigationUtil.goToAlbum(activity, song.albumId, albumPairs);
return true; return true;
} }

View file

@ -11,7 +11,6 @@ import android.view.View;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -54,8 +53,6 @@ public class SmartPlaylistSongAdapter extends SongAdapter {
Pair[] albumPairs = new Pair[]{ Pair[] albumPairs = new Pair[]{
Pair.create(image, activity.getString(R.string.transition_album_art)) 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); NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).albumId, albumPairs);
return true; return true;
} }

View file

@ -21,7 +21,6 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper; import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.CabHolder;
import com.kabouzeid.gramophone.model.Song; 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.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
@ -237,8 +236,6 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
Pair[] albumPairs = new Pair[]{ Pair[] albumPairs = new Pair[]{
Pair.create(image, activity.getResources().getString(R.string.transition_album_art)) Pair.create(image, activity.getResources().getString(R.string.transition_album_art))
}; };
if (activity instanceof AbsSlidingMusicPanelActivity)
albumPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews(albumPairs);
NavigationUtil.goToAlbum(activity, getSong().albumId, albumPairs); NavigationUtil.goToAlbum(activity, getSong().albumId, albumPairs);
return true; return true;
} }

View file

@ -2,7 +2,6 @@ package com.kabouzeid.gramophone.helper.menu;
import android.content.Intent; import android.content.Intent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.util.Pair;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@ -15,7 +14,6 @@ import com.kabouzeid.gramophone.dialogs.SongDetailDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.interfaces.PaletteColorHolder; import com.kabouzeid.gramophone.interfaces.PaletteColorHolder;
import com.kabouzeid.gramophone.model.Song; 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.AbsTagEditorActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity; import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
@ -58,16 +56,10 @@ public class SongMenuHelper {
SongDetailDialog.create(song).show(activity.getSupportFragmentManager(), "SONG_DETAILS"); SongDetailDialog.create(song).show(activity.getSupportFragmentManager(), "SONG_DETAILS");
return true; return true;
case R.id.action_go_to_album: case R.id.action_go_to_album:
Pair[] albumPairs = null; NavigationUtil.goToAlbum(activity, song.albumId);
if (activity instanceof AbsSlidingMusicPanelActivity)
albumPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews();
NavigationUtil.goToAlbum(activity, song.albumId, albumPairs);
return true; return true;
case R.id.action_go_to_artist: case R.id.action_go_to_artist:
Pair[] artistPairs = null; NavigationUtil.goToArtist(activity, song.artistId);
if (activity instanceof AbsSlidingMusicPanelActivity)
artistPairs = ((AbsSlidingMusicPanelActivity) activity).addPlayPauseFabToSharedViews();
NavigationUtil.goToArtist(activity, song.artistId, artistPairs);
return true; return true;
} }
return false; return false;

View file

@ -15,7 +15,7 @@ public class FloatingActionButtonProperties {
@Override @Override
public void set(FloatingActionButton object, Integer value) { public void set(FloatingActionButton object, Integer value) {
object.setBackgroundTintList(ColorStateList.valueOf(value)); object.setBackgroundTintList(ColorStateList.valueOf(value));
object.getDrawable().setColorFilter(ColorUtil.getPrimaryTextColorForBackground(object.getContext(), value), PorterDuff.Mode.SRC_IN); object.getDrawable().mutate().setColorFilter(ColorUtil.getPrimaryTextColorForBackground(object.getContext(), value), PorterDuff.Mode.SRC_IN);
} }
@Override @Override

View file

@ -8,7 +8,6 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.util.Pair;
import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
@ -360,8 +359,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
startActivityForResult(intent, TAG_EDITOR_REQUEST); startActivityForResult(intent, TAG_EDITOR_REQUEST);
return true; return true;
case R.id.action_go_to_artist: case R.id.action_go_to_artist:
Pair[] artistPairs = addPlayPauseFabToSharedViews(); NavigationUtil.goToArtist(this, album.artistId);
NavigationUtil.goToArtist(this, album.artistId, artistPairs);
return true; return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);

View file

@ -2,7 +2,6 @@ package com.kabouzeid.gramophone.ui.activities.base;
import android.animation.Animator; import android.animation.Animator;
import android.animation.AnimatorSet; import android.animation.AnimatorSet;
import android.animation.ArgbEvaluator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
@ -24,7 +23,6 @@ import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton; import android.support.design.widget.FloatingActionButton;
import android.support.v4.util.Pair;
import android.support.v7.widget.CardView; import android.support.v7.widget.CardView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.TypedValue; import android.util.TypedValue;
@ -96,20 +94,20 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
private static final int FAB_CIRCULAR_REVEAL_ANIMATION_TIME = 1000; private static final int FAB_CIRCULAR_REVEAL_ANIMATION_TIME = 1000;
@Bind(R.id.play_pause_fab)
FloatingActionButton playPauseButton;
@Bind(R.id.sliding_layout) @Bind(R.id.sliding_layout)
SlidingUpPanelLayout slidingUpPanelLayout; SlidingUpPanelLayout slidingUpPanelLayout;
@Bind(R.id.mini_player) @Bind(R.id.mini_player)
FrameLayout miniPlayer; LinearLayout miniPlayer;
@Bind(R.id.mini_player_title) @Bind(R.id.mini_player_title)
TextView miniPlayerTitle; TextView miniPlayerTitle;
@Bind(R.id.mini_player_image) @Bind(R.id.mini_player_image)
ImageView miniPlayerImage; ImageView miniPlayerImage;
@Bind(R.id.mini_player_play_pause_button)
ImageView miniPlayerPlayPauseButton;
@Bind(R.id.player_dummy_fab) @Bind(R.id.player_play_pause_fab)
View dummyFab; FloatingActionButton playerPlayPauseFab;
@Bind(R.id.player_title) @Bind(R.id.player_title)
TextView songTitle; TextView songTitle;
@ -131,8 +129,6 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
RelativeLayout mediaControllerContainer; RelativeLayout mediaControllerContainer;
@Bind(R.id.player_media_controller_container_background) @Bind(R.id.player_media_controller_container_background)
View mediaControllerContainerBackground; View mediaControllerContainerBackground;
@Bind(R.id.player_footer_frame)
LinearLayout footerFrame;
@Bind(R.id.player_album_art_background) @Bind(R.id.player_album_art_background)
ImageView albumArtBackground; ImageView albumArtBackground;
@Bind(R.id.player_image) @Bind(R.id.player_image)
@ -174,8 +170,6 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
private AnimatorSet colorTransitionAnimator; private AnimatorSet colorTransitionAnimator;
private ArgbEvaluator argbEvaluator = new ArgbEvaluator();
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -185,7 +179,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
initAppearanceVarsFromSharedPrefs(); initAppearanceVarsFromSharedPrefs();
PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this); PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this);
setUpPlayPauseButton(); setUpPlayPauseButtons();
setUpMiniPlayer(); setUpMiniPlayer();
setUpSlidingPanel(); setUpSlidingPanel();
@ -198,14 +192,9 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
progressViewsUpdateHandler = new MusicProgressViewsUpdateHandler(this); progressViewsUpdateHandler = new MusicProgressViewsUpdateHandler(this);
// I know the nested post calls are ugly, but this is necessary for the fab to be in the right position! slidingUpPanelLayout.post(new Runnable() {
playPauseButton.post(new Runnable() {
@Override @Override
public void run() { public void run() {
dummyFab.post(new Runnable() {
@Override
public void run() {
playPauseButton.requestLayout();
if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) { if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
mediaControllerContainer.setVisibility(View.VISIBLE); mediaControllerContainer.setVisibility(View.VISIBLE);
onPanelSlide(slidingUpPanelLayout, 1); onPanelSlide(slidingUpPanelLayout, 1);
@ -214,8 +203,6 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
}); });
} }
});
}
protected abstract View createContentView(); protected abstract View createContentView();
@ -245,7 +232,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Override @Override
public void onServiceConnected(ComponentName name, IBinder service) { public void onServiceConnected(ComponentName name, IBinder service) {
hideBottomBarIfQueueIsEmpty(); hideBottomBar(MusicPlayerRemote.getPlayingQueue().isEmpty());
super.onServiceConnected(name, service); super.onServiceConnected(name, service);
} }
@ -302,7 +289,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
updateRepeatState(); updateRepeatState();
updateShuffleState(); updateShuffleState();
setUpProgressSliderTint(); setUpProgressSliderTint();
setUpPlayPauseButtonTint(); setUpPlayerPlayPauseFabTint();
break; break;
case PreferenceUtil.HIDE_BOTTOM_BAR: case PreferenceUtil.HIDE_BOTTOM_BAR:
recreate(); recreate();
@ -310,46 +297,32 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
} }
private void setUpPlayPauseButton() { private View.OnClickListener playPauseButtonOnClickListener = new View.OnClickListener() {
updateFabState(false);
playPauseButton.setImageDrawable(playPauseDrawable);
setUpPlayPauseButtonTint();
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
toggleSlidingPanel();
return true;
}
});
playPauseButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (MusicPlayerRemote.getPosition() != -1) {
if (MusicPlayerRemote.isPlaying()) { if (MusicPlayerRemote.isPlaying()) {
MusicPlayerRemote.pauseSong(); MusicPlayerRemote.pauseSong();
} else { } else {
MusicPlayerRemote.resumePlaying(); MusicPlayerRemote.resumePlaying();
} }
} }
} };
});
playPauseButton.setOnTouchListener(new View.OnTouchListener() { private void setUpPlayPauseButtons() {
@Override updatePlayPauseDrawableState(false);
public boolean onTouch(View view, @NonNull MotionEvent event) {
gestureDetector.onTouchEvent(event); miniPlayerPlayPauseButton.setImageDrawable(playPauseDrawable);
return false; playerPlayPauseFab.setImageDrawable(getDrawable(R.drawable.ic_keyboard_arrow_up_white_24dp));
} setUpPlayerPlayPauseFabTint();
}); miniPlayerPlayPauseButton.getDrawable().mutate().setColorFilter(ColorUtil.resolveColor(this, android.R.attr.textColorSecondary), PorterDuff.Mode.SRC_IN);
miniPlayerPlayPauseButton.setOnClickListener(playPauseButtonOnClickListener);
playerPlayPauseFab.setOnClickListener(playPauseButtonOnClickListener);
} }
private void setUpPlayPauseButtonTint() { private void setUpPlayerPlayPauseFabTint() {
int fabColor = colorPlaybackControls && slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED ? lastPlaybackControlsColor : getThemeColorAccent(); int fabColor = colorPlaybackControls ? lastPlaybackControlsColor : getThemeColorAccent();
FloatingActionButtonProperties.COLOR.set(playPauseButton, fabColor); FloatingActionButtonProperties.COLOR.set(playerPlayPauseFab, fabColor);
} }
private static class FlingPlayBackController implements View.OnTouchListener { private static class FlingPlayBackController implements View.OnTouchListener {
@ -394,7 +367,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
setMiniPlayerColor(ColorUtil.resolveColor(this, R.attr.cardBackgroundColor)); setMiniPlayerColor(ColorUtil.resolveColor(this, R.attr.cardBackgroundColor));
miniPlayerImage.setImageDrawable(Util.getTintedDrawable(this, R.drawable.ic_equalizer_white_24dp, miniPlayerImage.setImageDrawable(Util.getTintedDrawable(this, R.drawable.ic_keyboard_arrow_up_white_24dp,
ColorUtil.resolveColor(this, android.R.attr.textColorSecondary))); ColorUtil.resolveColor(this, android.R.attr.textColorSecondary)));
} }
@ -412,8 +385,6 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Override @Override
public void onPanelSlide(View view, @FloatRange(from = 0, to = 1) float slideOffset) { public void onPanelSlide(View view, @FloatRange(from = 0, to = 1) float slideOffset) {
setFabPositionProgress(slideOffset);
setFabColorProgress(slideOffset);
setMiniPlayerAlphaProgress(slideOffset); setMiniPlayerAlphaProgress(slideOffset);
} }
@ -436,11 +407,11 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (mediaControllerContainer.getVisibility() == View.INVISIBLE) { if (mediaControllerContainer.getVisibility() == View.INVISIBLE) {
int cx = (dummyFab.getLeft() + dummyFab.getRight()) / 2; int cx = (playerPlayPauseFab.getLeft() + playerPlayPauseFab.getRight()) / 2;
int cy = (dummyFab.getTop() + dummyFab.getBottom()) / 2; int cy = (playerPlayPauseFab.getTop() + playerPlayPauseFab.getBottom()) / 2;
int finalRadius = Math.max(mediaControllerContainer.getWidth(), mediaControllerContainer.getHeight()); 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.setInterpolator(new DecelerateInterpolator());
animator.setDuration(FAB_CIRCULAR_REVEAL_ANIMATION_TIME); animator.setDuration(FAB_CIRCULAR_REVEAL_ANIMATION_TIME);
animator.start(); animator.start();
@ -463,29 +434,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
private void setMiniPlayerAlphaProgress(@FloatRange(from = 0, to = 1) float progress) { private void setMiniPlayerAlphaProgress(@FloatRange(from = 0, to = 1) float progress) {
float alpha = 1 - progress; float alpha = 1 - progress;
miniPlayer.setAlpha(alpha); miniPlayer.setAlpha(alpha);
// necessary to make the views below clickable
miniPlayer.setVisibility(alpha == 0 ? View.GONE : View.VISIBLE); 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() { private void toggleSlidingPanel() {
if (slidingUpPanelLayout.getPanelState() != SlidingUpPanelLayout.PanelState.EXPANDED) { if (slidingUpPanelLayout.getPanelState() != SlidingUpPanelLayout.PanelState.EXPANDED) {
slidingUpPanelLayout.setPanelState(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(); return getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity) - slidingUpPanelLayout.getPanelHeight();
} }
protected void updateFabState(boolean animate) { protected void updatePlayPauseDrawableState(boolean animate) {
if (playPauseDrawable == null) { if (playPauseDrawable == null) {
playPauseDrawable = new PlayPauseDrawable(this); 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 @Override
public void onPlayStateChanged() { public void onPlayStateChanged() {
super.onPlayStateChanged(); super.onPlayStateChanged();
updateFabState(true); updatePlayPauseDrawableState(true);
} }
protected View wrapSlidingMusicPanelAndFab(@LayoutRes int resId) { protected View wrapSlidingMusicPanelAndFab(@LayoutRes int resId) {
@ -850,23 +790,13 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
} }
private void updateCurrentSong() { private void updateCurrentSong() {
hideBottomBarIfQueueIsEmpty(); hideBottomBar(MusicPlayerRemote.getPlayingQueue().isEmpty());
getCurrentSong(); getCurrentSong();
updateMiniPlayerAndHeaderText(); updateMiniPlayerAndHeaderText();
setUpAlbumArtAndApplyPalette(); setUpAlbumArtAndApplyPalette();
updatePlayerMenu(); 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() { private void getCurrentSong() {
song = MusicPlayerRemote.getCurrentSong(); song = MusicPlayerRemote.getCurrentSong();
} }
@ -991,7 +921,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
updateRepeatState(); updateRepeatState();
updateShuffleState(); updateShuffleState();
setUpProgressSliderTint(); setUpProgressSliderTint();
setUpPlayPauseButtonTint(); setUpPlayerPlayPauseFabTint();
} }
}); });
@ -1098,10 +1028,10 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
SongDetailDialog.create(song).show(getSupportFragmentManager(), "SONG_DETAIL"); SongDetailDialog.create(song).show(getSupportFragmentManager(), "SONG_DETAIL");
return true; return true;
case R.id.action_go_to_album: case R.id.action_go_to_album:
NavigationUtil.goToAlbum(this, song.albumId, addPlayPauseFabToSharedViews()); NavigationUtil.goToAlbum(this, song.albumId);
return true; return true;
case R.id.action_go_to_artist: case R.id.action_go_to_artist:
NavigationUtil.goToArtist(this, song.artistId, addPlayPauseFabToSharedViews()); NavigationUtil.goToArtist(this, song.artistId);
return true; return true;
} }
return false; return false;

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

View file

@ -1,35 +1,40 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mini_player"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mini_player"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/mini_player_height" android:layout_height="@dimen/mini_player_height"
android:clickable="true" android:clickable="true"
android:focusable="false"> android:focusable="false"
android:orientation="horizontal">
<ImageView <ImageView
android:id="@+id/mini_player_image" android:id="@+id/mini_player_image"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginEnd="16dp" android:layout_margin="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
android:id="@+id/mini_player_title" android:id="@+id/mini_player_title"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginEnd="88dp" android:layout_marginLeft="16dp"
android:layout_marginLeft="72dp" android:layout_marginStart="16dp"
android:layout_marginRight="88dp" android:layout_weight="1"
android:layout_marginStart="72dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" /> android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
</FrameLayout> <ImageView
android:id="@+id/mini_player_play_pause_button"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_margin="16dp"
android:scaleType="centerCrop"
tools:ignore="ContentDescription" />
</LinearLayout>

View file

@ -176,11 +176,9 @@
android:src="@drawable/ic_shuffle_white_36dp" /> android:src="@drawable/ic_shuffle_white_36dp" />
<android.support.design.widget.FloatingActionButton <android.support.design.widget.FloatingActionButton
android:id="@+id/player_dummy_fab" android:id="@+id/player_play_pause_fab"
style="@style/PlayPauseFab" style="@style/PlayPauseFab"
android:layout_centerInParent="true" android:layout_centerInParent="true" />
android:layout_margin="0dp"
android:visibility="invisible" />
</RelativeLayout> </RelativeLayout>

View file

@ -1,9 +1,5 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sothree="http://schemas.android.com/apk/res-auto" xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.sothree.slidinguppanel.SlidingUpPanelLayout
android:id="@+id/sliding_layout" android:id="@+id/sliding_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -33,14 +29,3 @@
</FrameLayout> </FrameLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout> </com.sothree.slidinguppanel.SlidingUpPanelLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/play_pause_fab"
style="@style/PlayPauseFab"
android:layout_gravity="end|bottom"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginLeft="@dimen/fab_margin_top_left_right"
android:layout_marginRight="@dimen/fab_margin_top_left_right"
android:layout_marginTop="@dimen/fab_margin_top_left_right" />
</FrameLayout>