Added double tap on album cover to toggle favorite

This commit is contained in:
Karim Abou Zeid 2015-12-23 18:27:30 +01:00
commit b3a061c342
3 changed files with 45 additions and 20 deletions

View file

@ -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();

View file

@ -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();
}
}

View file

@ -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) {