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