From ecdc9bb870914f9f940b6191913c188ee1269af7 Mon Sep 17 00:00:00 2001 From: tkashkin Date: Wed, 12 Jul 2017 11:18:53 +0300 Subject: [PATCH] Fix some UI bugs Add animations --- .../model/lyrics/AbsSynchronizedLyrics.java | 8 ++-- .../gramophone/model/lyrics/Lyrics.java | 4 +- .../player/PlayerAlbumCoverFragment.java | 48 ++++++++++++------- .../player/card/CardPlayerFragment.java | 21 ++++---- .../player/flat/FlatPlayerFragment.java | 21 ++++---- .../layout/fragment_player_album_cover.xml | 3 +- 6 files changed, 64 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java index e3116bfa..99a5328f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/AbsSynchronizedLyrics.java @@ -31,15 +31,15 @@ public abstract class AbsSynchronizedLyrics extends Lyrics { } public boolean isValid() { - this.parse(true); - return this.valid; + parse(true); + return valid; } @Override public String getText() { - if (isValid()) { - parse(false); + parse(false); + if (valid) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < lines.size(); i++) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java index 82fb5855..1ed589b8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/lyrics/Lyrics.java @@ -23,12 +23,12 @@ public class Lyrics { for (Class format : Lyrics.FORMATS) { try { Lyrics lyrics = format.newInstance().setData(song, data); - if (lyrics.isValid()) return lyrics; + if (lyrics.isValid()) return lyrics.parse(false); } catch (Exception e) { e.printStackTrace(); } } - return new Lyrics().setData(song, data); + return new Lyrics().setData(song, data).parse(false); } public static boolean isSynchronized(String data) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java index 526c2f7f..33bdc143 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerAlbumCoverFragment.java @@ -35,6 +35,8 @@ import butterknife.Unbinder; public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements ViewPager.OnPageChangeListener, MusicProgressViewUpdateHelper.Callback { public static final String TAG = PlayerAlbumCoverFragment.class.getSimpleName(); + public static final int LYRICS_ANIM_DURATION = 300; + private Unbinder unbinder; @BindView(R.id.player_album_cover_viewpager) @@ -183,17 +185,25 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements } public void setLyrics(Lyrics l) { - if (l == null || !l.isSynchronized() || !l.isValid()) { - lyrics = null; - lyricsLayout.setVisibility(View.GONE); - lyricsLine1.setText(null); - lyricsLine2.setText(null); + lyrics = l; + + if (!PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow() || l == null || !l.isSynchronized() || !l.isValid()) { + lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION).withEndAction(new Runnable() { + @Override + public void run() { + lyricsLayout.setVisibility(View.GONE); + lyricsLine1.setText(null); + lyricsLine2.setText(null); + } + }); return; } - lyrics = l; + lyricsLine1.setText(null); + lyricsLine2.setText(null); lyricsLayout.setVisibility(View.VISIBLE); + lyricsLayout.animate().alpha(1f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION); } private void notifyColorChange(int color) { @@ -206,10 +216,15 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements @Override public void onUpdateProgressViews(int progress, int total) { - if (lyrics == null || !lyrics.isSynchronized() || !lyrics.isValid() || !PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow()) { - lyricsLayout.setVisibility(View.GONE); - lyricsLine1.setText(null); - lyricsLine2.setText(null); + if (!PreferenceUtil.getInstance(getActivity()).synchronizedLyricsShow() || lyrics == null || !lyrics.isSynchronized() || !lyrics.isValid()) { + lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION).withEndAction(new Runnable() { + @Override + public void run() { + lyricsLayout.setVisibility(View.GONE); + lyricsLine1.setText(null); + lyricsLine2.setText(null); + } + }); return; } @@ -217,6 +232,7 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements AbsSynchronizedLyrics synchronizedLyrics = (AbsSynchronizedLyrics) lyrics; lyricsLayout.setVisibility(View.VISIBLE); + lyricsLayout.setAlpha(1f); String oldLine = lyricsLine2.getText().toString(); String line = synchronizedLyrics.getLine(progress); @@ -231,13 +247,13 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements lyricsLine2.measure(View.MeasureSpec.makeMeasureSpec(lyricsLine2.getMeasuredWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.UNSPECIFIED); int h = lyricsLine2.getMeasuredHeight(); - this.lyricsLine1.setAlpha(1f); - this.lyricsLine1.setTranslationY(0f); - this.lyricsLine1.animate().alpha(0f).translationY(-h).setDuration(300); + lyricsLine1.setAlpha(1f); + lyricsLine1.setTranslationY(0f); + lyricsLine1.animate().alpha(0f).translationY(-h).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION); - this.lyricsLine2.setAlpha(0f); - this.lyricsLine2.setTranslationY(h); - this.lyricsLine2.animate().alpha(1f).translationY(0f).setDuration(300); + lyricsLine2.setAlpha(0f); + lyricsLine2.setTranslationY(h); + lyricsLine2.animate().alpha(1f).translationY(0f).setDuration(PlayerAlbumCoverFragment.LYRICS_ANIM_DURATION); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java index 651d77f8..c939bf1d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java @@ -300,7 +300,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private void updateLyrics() { if (updateLyricsAsyncTask != null) updateLyricsAsyncTask.cancel(false); final Song song = MusicPlayerRemote.getCurrentSong(); - updateLyricsAsyncTask = new AsyncTask() { + updateLyricsAsyncTask = new AsyncTask() { @Override protected void onPreExecute() { super.onPreExecute(); @@ -310,20 +310,23 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum } @Override - protected String doInBackground(Void... params) { - return MusicUtil.getLyrics(song); + 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(String data) { - if (TextUtils.isEmpty(data)) { - lyrics = null; + 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 { - lyrics = Lyrics.parse(song, data); - playerAlbumCoverFragment.setLyrics(lyrics); Activity activity = getActivity(); if (toolbar != null && activity != null) if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) { @@ -338,7 +341,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum } @Override - protected void onCancelled(String s) { + protected void onCancelled(Lyrics s) { onPostExecute(null); } }.execute(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java index 337ca50f..16adf455 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java @@ -296,7 +296,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum private void updateLyrics() { if (updateLyricsAsyncTask != null) updateLyricsAsyncTask.cancel(false); final Song song = MusicPlayerRemote.getCurrentSong(); - updateLyricsAsyncTask = new AsyncTask() { + updateLyricsAsyncTask = new AsyncTask() { @Override protected void onPreExecute() { super.onPreExecute(); @@ -306,20 +306,23 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum } @Override - protected String doInBackground(Void... params) { - return MusicUtil.getLyrics(song); + 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(String data) { - if (TextUtils.isEmpty(data)) { - lyrics = null; + 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 { - lyrics = Lyrics.parse(song, data); - playerAlbumCoverFragment.setLyrics(lyrics); Activity activity = getActivity(); if (toolbar != null && activity != null) if (toolbar.getMenu().findItem(R.id.action_show_lyrics) == null) { @@ -334,7 +337,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum } @Override - protected void onCancelled(String s) { + protected void onCancelled(Lyrics s) { onPostExecute(null); } }.execute(); diff --git a/app/src/main/res/layout/fragment_player_album_cover.xml b/app/src/main/res/layout/fragment_player_album_cover.xml index a47b37d7..17e13007 100644 --- a/app/src/main/res/layout/fragment_player_album_cover.xml +++ b/app/src/main/res/layout/fragment_player_album_cover.xml @@ -18,7 +18,8 @@ android:background="@drawable/shadow_up" android:padding="16dp" android:clipToPadding="false" - android:visibility="gone"> + android:visibility="gone" + android:alpha="0">