Added double tap on album cover to toggle favorite
This commit is contained in:
parent
9dc26bd1eb
commit
b3a061c342
3 changed files with 45 additions and 20 deletions
|
|
@ -49,7 +49,7 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
new SleepTimerDialog().show(getFragmentManager(), "SET_SLEEP_TIMER");
|
||||
return true;
|
||||
case R.id.action_toggle_favorite:
|
||||
MusicUtil.toggleFavorite(getActivity(), song);
|
||||
toggleFavorite(song);
|
||||
return true;
|
||||
case R.id.action_share:
|
||||
SongShareDialog.create(song).show(getFragmentManager(), "SHARE_SONG");
|
||||
|
|
@ -83,6 +83,10 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
return false;
|
||||
}
|
||||
|
||||
protected void toggleFavorite(Song song){
|
||||
MusicUtil.toggleFavorite(getActivity(), song);
|
||||
}
|
||||
|
||||
public abstract void onShow();
|
||||
|
||||
public abstract void onHide();
|
||||
|
|
|
|||
|
|
@ -4,7 +4,9 @@ import android.animation.Animator;
|
|||
import android.os.Bundle;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.AccelerateInterpolator;
|
||||
|
|
@ -32,7 +34,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
@Bind(R.id.player_favorite_icon)
|
||||
ImageView favoriteIcon;
|
||||
|
||||
private OnColorChangedListener onColorChangedListener;
|
||||
private Callbacks callbacks;
|
||||
private int currentPosition;
|
||||
|
||||
@Override
|
||||
|
|
@ -49,6 +51,23 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
viewPager.setOffscreenPageLimit(2);
|
||||
updatePlayingQueue();
|
||||
viewPager.addOnPageChangeListener(this);
|
||||
viewPager.setOnTouchListener(new View.OnTouchListener() {
|
||||
GestureDetector gestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() {
|
||||
@Override
|
||||
public boolean onDoubleTap(MotionEvent e) {
|
||||
if (callbacks != null) {
|
||||
callbacks.onFavoriteToggled();
|
||||
return true;
|
||||
}
|
||||
return super.onDoubleTap(e);
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
return gestureDetector.onTouchEvent(event);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -144,14 +163,16 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
}
|
||||
|
||||
private void notifyColorChange(int color) {
|
||||
if (onColorChangedListener != null) onColorChangedListener.onColorChanged(color);
|
||||
if (callbacks != null) callbacks.onColorChanged(color);
|
||||
}
|
||||
|
||||
public void setOnColorChangedListener(OnColorChangedListener listener) {
|
||||
onColorChangedListener = listener;
|
||||
public void setCallbacks(Callbacks listener) {
|
||||
callbacks = listener;
|
||||
}
|
||||
|
||||
interface OnColorChangedListener {
|
||||
interface Callbacks {
|
||||
void onColorChanged(int color);
|
||||
|
||||
void onFavoriteToggled();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import android.support.v7.widget.CardView;
|
|||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewAnimationUtils;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -39,7 +38,7 @@ import org.solovyev.android.views.llm.LinearLayoutManager;
|
|||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.OnColorChangedListener, SlidingUpPanelLayout.PanelSlideListener {
|
||||
public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCoverFragment.Callbacks, SlidingUpPanelLayout.PanelSlideListener {
|
||||
public static final String TAG = PlayerFragment.class.getSimpleName();
|
||||
|
||||
@Bind(R.id.player_toolbar)
|
||||
|
|
@ -172,7 +171,7 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
playbackControlsFragment = (PlaybackControlsFragment) getChildFragmentManager().findFragmentById(R.id.playback_controls_fragment);
|
||||
playerAlbumCoverFragment = (PlayerAlbumCoverFragment) getChildFragmentManager().findFragmentById(R.id.player_album_cover_fragment);
|
||||
|
||||
playerAlbumCoverFragment.setOnColorChangedListener(this);
|
||||
playerAlbumCoverFragment.setCallbacks(this);
|
||||
}
|
||||
|
||||
private void setUpPlayerToolbar() {
|
||||
|
|
@ -254,18 +253,14 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
final Song song = MusicPlayerRemote.getCurrentSong();
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_toggle_favorite:
|
||||
super.onMenuItemClick(item);
|
||||
if (MusicUtil.isFavorite(getActivity(), song)) {
|
||||
playerAlbumCoverFragment.showHeartAnimation();
|
||||
}
|
||||
updateIsFavorite();
|
||||
return true;
|
||||
protected void toggleFavorite(Song song) {
|
||||
super.toggleFavorite(song);
|
||||
if (song.id == MusicPlayerRemote.getCurrentSong().id) {
|
||||
if (MusicUtil.isFavorite(getActivity(), song)) {
|
||||
playerAlbumCoverFragment.showHeartAnimation();
|
||||
}
|
||||
updateIsFavorite();
|
||||
}
|
||||
return super.onMenuItemClick(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -294,6 +289,11 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
|
|||
getCallbacks().onPaletteColorChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFavoriteToggled() {
|
||||
toggleFavorite(MusicPlayerRemote.getCurrentSong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPanelSlide(View view, float slide) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue