remove lyrics

This commit is contained in:
dkanada 2019-07-17 17:06:47 -07:00
commit a26ddacc8c
45 changed files with 7 additions and 691 deletions

View file

@ -11,19 +11,13 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.AlbumCoverPagerAdapter;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper;
import com.kabouzeid.gramophone.misc.SimpleAnimatorListener;
import com.kabouzeid.gramophone.model.lyrics.AbsSynchronizedLyrics;
import com.kabouzeid.gramophone.model.lyrics.Lyrics;
import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.ViewUtil;
import butterknife.BindView;
@ -33,7 +27,7 @@ import butterknife.Unbinder;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements ViewPager.OnPageChangeListener, MusicProgressViewUpdateHelper.Callback {
public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements ViewPager.OnPageChangeListener {
public static final int VISIBILITY_ANIM_DURATION = 300;
@ -44,19 +38,9 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
@BindView(R.id.player_favorite_icon)
ImageView favoriteIcon;
@BindView(R.id.player_lyrics)
FrameLayout lyricsLayout;
@BindView(R.id.player_lyrics_line1)
TextView lyricsLine1;
@BindView(R.id.player_lyrics_line2)
TextView lyricsLine2;
private Callbacks callbacks;
private int currentPosition;
private Lyrics lyrics;
private MusicProgressViewUpdateHelper progressViewUpdateHelper;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_player_album_cover, container, false);
@ -85,15 +69,12 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
return gestureDetector.onTouchEvent(event);
}
});
progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this, 500, 1000);
progressViewUpdateHelper.start();
}
@Override
public void onDestroyView() {
super.onDestroyView();
viewPager.removeOnPageChangeListener(this);
progressViewUpdateHelper.stop();
unbinder.unbind();
}
@ -176,40 +157,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
.start();
}
private boolean isLyricsLayoutVisible() {
return lyrics != null && lyrics.isSynchronized() && lyrics.isValid() && PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow();
}
private boolean isLyricsLayoutBound() {
return lyricsLayout != null && lyricsLine1 != null && lyricsLine2 != null;
}
private void hideLyricsLayout() {
lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(() -> {
if (!isLyricsLayoutBound()) return;
lyricsLayout.setVisibility(View.GONE);
lyricsLine1.setText(null);
lyricsLine2.setText(null);
});
}
public void setLyrics(Lyrics l) {
lyrics = l;
if (!isLyricsLayoutBound()) return;
if (!isLyricsLayoutVisible()) {
hideLyricsLayout();
return;
}
lyricsLine1.setText(null);
lyricsLine2.setText(null);
lyricsLayout.setVisibility(View.VISIBLE);
lyricsLayout.animate().alpha(1f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION);
}
private void notifyColorChange(int color) {
if (callbacks != null) callbacks.onColorChanged(color);
}
@ -218,44 +165,6 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
callbacks = listener;
}
@Override
public void onUpdateProgressViews(int progress, int total) {
if (!isLyricsLayoutBound()) return;
if (!isLyricsLayoutVisible()) {
hideLyricsLayout();
return;
}
if (!(lyrics instanceof AbsSynchronizedLyrics)) return;
AbsSynchronizedLyrics synchronizedLyrics = (AbsSynchronizedLyrics) lyrics;
lyricsLayout.setVisibility(View.VISIBLE);
lyricsLayout.setAlpha(1f);
String oldLine = lyricsLine2.getText().toString();
String line = synchronizedLyrics.getLine(progress);
if (!oldLine.equals(line) || oldLine.isEmpty()) {
lyricsLine1.setText(oldLine);
lyricsLine2.setText(line);
lyricsLine1.setVisibility(View.VISIBLE);
lyricsLine2.setVisibility(View.VISIBLE);
lyricsLine2.measure(View.MeasureSpec.makeMeasureSpec(lyricsLine2.getMeasuredWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED);
int h = lyricsLine2.getMeasuredHeight();
lyricsLine1.setAlpha(1f);
lyricsLine1.setTranslationY(0f);
lyricsLine1.animate().alpha(0f).translationY(-h).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION);
lyricsLine2.setAlpha(0f);
lyricsLine2.setTranslationY(h);
lyricsLine2.animate().alpha(1f).translationY(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION);
}
}
public interface Callbacks {
void onColorChanged(int color);
@ -263,4 +172,4 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
void onToolbarToggled();
}
}
}

View file

@ -17,9 +17,8 @@ import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewAnimationUtils;
@ -40,12 +39,10 @@ import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.adapter.song.PlayingQueueAdapter;
import com.kabouzeid.gramophone.dialogs.LyricsDialog;
import com.kabouzeid.gramophone.dialogs.SongShareDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.lyrics.Lyrics;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.ui.fragments.player.AbsPlayerFragment;
import com.kabouzeid.gramophone.ui.fragments.player.PlayerAlbumCoverFragment;
@ -93,9 +90,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private RecyclerViewDragDropManager recyclerViewDragDropManager;
private AsyncTask updateIsFavoriteTask;
private AsyncTask updateLyricsAsyncTask;
private Lyrics lyrics;
private Impl impl;
@ -183,7 +177,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
updateQueue();
updateCurrentSong();
updateIsFavorite();
updateLyrics();
}
@Override
@ -191,7 +184,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
updateCurrentSong();
updateIsFavorite();
updateQueuePosition();
updateLyrics();
}
@Override
@ -239,17 +231,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
toolbar.setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_show_lyrics:
if (lyrics != null)
LyricsDialog.create(lyrics).show(getFragmentManager(), "LYRICS");
return true;
}
return super.onMenuItemClick(item);
}
private void setUpRecyclerView() {
recyclerViewDragDropManager = new RecyclerViewDragDropManager();
final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator();
@ -303,56 +284,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
}.execute(MusicPlayerRemote.getCurrentSong());
}
private void updateLyrics() {
if (updateLyricsAsyncTask != null) updateLyricsAsyncTask.cancel(false);
final Song song = MusicPlayerRemote.getCurrentSong();
updateLyricsAsyncTask = new AsyncTask<Void, Void, Lyrics>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
lyrics = null;
playerAlbumCoverFragment.setLyrics(null);
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
@Override
protected Lyrics doInBackground(Void... params) {
String data = MusicUtil.getLyrics(song);
if (TextUtils.isEmpty(data)) {
return null;
}
return Lyrics.parse(song, data);
}
@Override
protected void onPostExecute(Lyrics l) {
lyrics = l;
playerAlbumCoverFragment.setLyrics(lyrics);
if (lyrics == null) {
if (toolbar != null) {
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
} else {
Activity activity = getActivity();
if (toolbar != null && activity != null)
if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) {
int color = ToolbarContentTintHelper.toolbarContentColor(activity, Color.TRANSPARENT);
Drawable drawable = ImageUtil.getTintedVectorDrawable(activity, R.drawable.ic_comment_text_outline_white_24dp, color);
toolbar.getMenu()
.add(Menu.NONE, R.id.action_show_lyrics, Menu.NONE, R.string.action_show_lyrics)
.setIcon(drawable)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
}
@Override
protected void onCancelled(Lyrics s) {
onPostExecute(null);
}
}.execute();
}
@Override
@ColorInt
public int getPaletteColor() {

View file

@ -10,14 +10,12 @@ import android.os.AsyncTask;
import android.os.Bundle;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@ -37,12 +35,10 @@ import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.adapter.song.PlayingQueueAdapter;
import com.kabouzeid.gramophone.dialogs.LyricsDialog;
import com.kabouzeid.gramophone.dialogs.SongShareDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.menu.SongMenuHelper;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.model.lyrics.Lyrics;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.ui.fragments.player.AbsPlayerFragment;
import com.kabouzeid.gramophone.ui.fragments.player.PlayerAlbumCoverFragment;
@ -63,12 +59,10 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
@BindView(R.id.player_status_bar)
View playerStatusBar;
@Nullable
@BindView(R.id.toolbar_container)
FrameLayout toolbarContainer;
@BindView(R.id.player_toolbar)
Toolbar toolbar;
@Nullable
@BindView(R.id.player_sliding_layout)
SlidingUpPanelLayout slidingUpPanelLayout;
@BindView(R.id.player_recycler_view)
@ -89,9 +83,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private RecyclerViewDragDropManager recyclerViewDragDropManager;
private AsyncTask updateIsFavoriteTask;
private AsyncTask updateLyricsAsyncTask;
private Lyrics lyrics;
private Impl impl;
@ -178,7 +169,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
updateQueue();
updateCurrentSong();
updateIsFavorite();
updateLyrics();
}
@Override
@ -186,7 +176,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
updateCurrentSong();
updateIsFavorite();
updateQueuePosition();
updateLyrics();
}
@Override
@ -234,17 +223,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
toolbar.setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_show_lyrics:
if (lyrics != null)
LyricsDialog.create(lyrics).show(getFragmentManager(), "LYRICS");
return true;
}
return super.onMenuItemClick(item);
}
private void setUpRecyclerView() {
recyclerViewDragDropManager = new RecyclerViewDragDropManager();
final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator();
@ -298,56 +276,6 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
}.execute(MusicPlayerRemote.getCurrentSong());
}
private void updateLyrics() {
if (updateLyricsAsyncTask != null) updateLyricsAsyncTask.cancel(false);
final Song song = MusicPlayerRemote.getCurrentSong();
updateLyricsAsyncTask = new AsyncTask<Void, Void, Lyrics>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
lyrics = null;
playerAlbumCoverFragment.setLyrics(null);
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
@Override
protected Lyrics doInBackground(Void... params) {
String data = MusicUtil.getLyrics(song);
if (TextUtils.isEmpty(data)) {
return null;
}
return Lyrics.parse(song, data);
}
@Override
protected void onPostExecute(Lyrics l) {
lyrics = l;
playerAlbumCoverFragment.setLyrics(lyrics);
if (lyrics == null) {
if (toolbar != null) {
toolbar.getMenu().removeItem(R.id.action_show_lyrics);
}
} else {
Activity activity = getActivity();
if (toolbar != null && activity != null)
if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) {
int color = ToolbarContentTintHelper.toolbarContentColor(activity, Color.TRANSPARENT);
Drawable drawable = ImageUtil.getTintedVectorDrawable(activity, R.drawable.ic_comment_text_outline_white_24dp, color);
toolbar.getMenu()
.add(Menu.NONE, R.id.action_show_lyrics, Menu.NONE, R.string.action_show_lyrics)
.setIcon(drawable)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
}
@Override
protected void onCancelled(Lyrics s) {
onPostExecute(null);
}
}.execute();
}
@Override
@ColorInt
public int getPaletteColor() {