remove lyrics
This commit is contained in:
parent
4089cb31cd
commit
a26ddacc8c
45 changed files with 7 additions and 691 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue