From ec2e943a5d4ef0b27a74826b2cd431310b080a43 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Thu, 13 Aug 2015 00:37:49 +0200 Subject: [PATCH] Option to hide the new bottom bar --- .../ui/activities/AlbumDetailActivity.java | 18 ++++++++-- .../ui/activities/ArtistDetailActivity.java | 18 ++++++++-- .../ui/activities/MainActivity.java | 29 ++++++++++++++- .../ui/activities/PlaylistDetailActivity.java | 15 ++++++++ .../base/AbsSlidingMusicPanelActivity.java | 18 +++++++++- .../AbsMainActivityRecyclerViewFragment.java | 15 +++++++- .../gramophone/util/PreferenceUtil.java | 13 ++++--- .../res/layout/activity_playlist_detail.xml | 1 - .../fragment_main_activity_recycler_view.xml | 1 - .../res/layout/fragment_playlist_view.xml | 36 ------------------- app/src/main/res/values/dimens.xml | 3 +- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_general.xml | 10 +++++- 13 files changed, 122 insertions(+), 57 deletions(-) delete mode 100644 app/src/main/res/layout/fragment_playlist_view.xml diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 95df1b26..442fd64e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.ui.activities; import android.animation.Animator; import android.annotation.TargetApi; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; @@ -43,6 +44,7 @@ import com.kabouzeid.gramophone.ui.activities.tageditor.AlbumTagEditorActivity; import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; +import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; import com.nostra13.universalimageloader.core.DisplayImageOptions; @@ -89,7 +91,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements private int albumArtViewHeight; private int toolbarColor; private float toolbarAlpha; - private int bottomOffset; @Override protected void onCreate(Bundle savedInstanceState) { @@ -179,7 +180,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements } private void setUpObservableListViewParams() { - bottomOffset = getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity); albumArtViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height); toolbarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color); int toolbarHeight = Util.getActionBarSize(this); @@ -274,8 +274,8 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements } private void setUpRecyclerViewView() { + setUpRecyclerViewPadding(); recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks); - recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, bottomOffset); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); contentView.post(new Runnable() { @Override @@ -289,6 +289,10 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements }); } + private void setUpRecyclerViewPadding() { + recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, getBottomOffset()); + } + private void setUpToolBar() { setSupportActionBar(toolbar); //noinspection ConstantConditions @@ -417,4 +421,12 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements super.onMediaStoreChanged(); reloadDataSet(); } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + super.onSharedPreferenceChanged(sharedPreferences, key); + if (key.equals(PreferenceUtil.HIDE_BOTTOM_BAR)) { + setUpRecyclerViewPadding(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index b621aa66..7bea72d4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.ui.activities; import android.animation.Animator; import android.annotation.TargetApi; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; @@ -50,6 +51,7 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; +import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.ViewUtil; import com.kabouzeid.gramophone.views.SquareIfPlaceImageView; @@ -98,7 +100,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private int artistImageViewHeight; private int toolbarColor; private float toolbarAlpha; - private int bottomOffset; private Artist artist; @Nullable @@ -187,7 +188,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement }; private void setUpObservableListViewParams() { - bottomOffset = getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity); artistImageViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height); toolbarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color); int toolbarHeight = Util.getActionBarSize(this); @@ -213,8 +213,8 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void setUpSongListView() { + setUpSongListPadding(); songListView.setScrollViewCallbacks(observableScrollViewCallbacks); - songListView.setPadding(0, artistImageViewHeight + titleViewHeight, 0, bottomOffset); songListView.addHeaderView(songListHeader); songAdapter = new ArtistSongAdapter(this, loadSongDataSet(), this); @@ -230,6 +230,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement }); } + private void setUpSongListPadding() { + songListView.setPadding(0, artistImageViewHeight + titleViewHeight, 0, getBottomOffset()); + } + private void setUpAlbumRecyclerView() { albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); albumAdapter = new HorizontalAlbumAdapter(this, loadAlbumDataSet(), this); @@ -477,4 +481,12 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement super.onMediaStoreChanged(); reloadDataSets(); } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + super.onSharedPreferenceChanged(sharedPreferences, key); + if (key.equals(PreferenceUtil.HIDE_BOTTOM_BAR)) { + setUpSongListPadding(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 867326c4..11ddd938 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -90,6 +90,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity @Nullable private View navigationDrawerHeader; + private ArrayList hideBottomBarListeners = new ArrayList<>(); + + public interface HideBottomBarListener { + void onBottomBarHiddenStateChanged(boolean hidden); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -127,7 +133,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity for (final PagerAdapter.MusicFragments fragment : fragments) { pagerAdapter.add(fragment.getFragmentClass(), null); } - pager.setAdapter(pagerAdapter); pager.setOffscreenPageLimit(pagerAdapter.getCount() - 1); @@ -576,4 +581,26 @@ public class MainActivity extends AbsSlidingMusicPanelActivity super.onPanelCollapsed(view); drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); } + + @Override + public void hideBottomBar(boolean hide) { + super.hideBottomBar(hide); + for (HideBottomBarListener hideBottomBarListener : hideBottomBarListeners) { + if (hideBottomBarListener != null) { + hideBottomBarListener.onBottomBarHiddenStateChanged(hide); + } + } + } + + public void addHideBottomBarListener(HideBottomBarListener listener) { + if (listener != null) { + hideBottomBarListeners.add(listener); + } + } + + public void removeHideBottomBarListener(HideBottomBarListener listener) { + if (listener != null) { + hideBottomBarListeners.remove(listener); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java index 509a58a5..4091aef8 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/PlaylistDetailActivity.java @@ -1,5 +1,6 @@ package com.kabouzeid.gramophone.ui.activities; +import android.content.SharedPreferences; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.widget.GridLayoutManager; @@ -27,6 +28,7 @@ import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PlaylistsUtil; +import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; import java.util.List; @@ -77,6 +79,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme } private void setUpRecyclerView() { + setUpRecyclerViewPadding(); recyclerView.setLayoutManager(new GridLayoutManager(this, 1)); if (playlist instanceof AbsSmartPlaylist) { adapter = new SmartPlaylistSongAdapter(this, loadSmartPlaylistDataSet(), R.layout.item_list, false, this); @@ -114,6 +117,10 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme }); } + private void setUpRecyclerViewPadding() { + recyclerView.setPadding(0, 0, 0, getBottomOffset()); + } + private void reloadDataSet() { if (playlist instanceof AbsSmartPlaylist) { adapter.swapDataSet(loadSmartPlaylistDataSet()); @@ -203,6 +210,14 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme reloadDataSet(); } + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + super.onSharedPreferenceChanged(sharedPreferences, key); + if (key.equals(PreferenceUtil.HIDE_BOTTOM_BAR)) { + setUpRecyclerViewPadding(); + } + } + private void checkIsEmpty() { empty.setVisibility( adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java index 3ef03e23..8f1a6155 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsSlidingMusicPanelActivity.java @@ -62,7 +62,7 @@ import butterknife.ButterKnife; /** * @author Karim Abou Zeid (kabouzeid) - *

+ *

* Do not use {@link #setContentView(int)} but wrap your layout with * {@link #wrapSlidingMusicPanelAndFab(int)} first and then return it in {@link #createContentView()} */ @@ -252,6 +252,9 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi showPlaybackControllerCard = PreferenceUtil.getInstance(this).playbackControllerCardNowPlaying(); setUpPlaybackControllerCard(); break; + case PreferenceUtil.HIDE_BOTTOM_BAR: + hideBottomBar(PreferenceUtil.getInstance(this).hideBottomBar()); + break; } } @@ -296,6 +299,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi } private void setUpMiniPlayer() { + hideBottomBar(PreferenceUtil.getInstance(this).hideBottomBar()); final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { @@ -403,6 +407,18 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi return slidingUpPanelLayout; } + public void hideBottomBar(boolean hide) { + if (hide) { + slidingUpPanelLayout.setPanelHeight(0); + } else { + slidingUpPanelLayout.setPanelHeight(getResources().getDimensionPixelSize(R.dimen.mini_player_height)); + } + } + + public int getBottomOffset() { + return getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity) - slidingUpPanelLayout.getPanelHeight(); + } + protected void updateFabState(boolean animate) { if (playPauseDrawable == null) { playPauseDrawable = new PlayPauseDrawable(this); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java index 2828b014..ec558059 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivityfragments/AbsMainActivityRecyclerViewFragment.java @@ -15,6 +15,7 @@ import android.widget.TextView; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener; +import com.kabouzeid.gramophone.ui.activities.MainActivity; import com.kabouzeid.gramophone.views.FastScroller; import butterknife.Bind; @@ -23,7 +24,7 @@ import butterknife.ButterKnife; /** * @author Karim Abou Zeid (kabouzeid) */ -public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivityFragment implements OnOffsetChangedListener, MusicServiceEventListener { +public abstract class AbsMainActivityRecyclerViewFragment extends AbsMainActivityFragment implements OnOffsetChangedListener, MusicServiceEventListener, MainActivity.HideBottomBarListener { public static final String TAG = AbsMainActivityRecyclerViewFragment.class.getSimpleName(); @@ -56,6 +57,7 @@ public abstract class AbsMainActivityRecyclerViewFragment diff --git a/app/src/main/res/layout/fragment_main_activity_recycler_view.xml b/app/src/main/res/layout/fragment_main_activity_recycler_view.xml index fd944ae2..99ed5a64 100644 --- a/app/src/main/res/layout/fragment_main_activity_recycler_view.xml +++ b/app/src/main/res/layout/fragment_main_activity_recycler_view.xml @@ -4,7 +4,6 @@ android:layout_height="match_parent"> - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 8f2426a3..c069970f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -44,8 +44,6 @@ http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout 96dp 128dp - 44dp - 8dp 8dp @@ -69,5 +67,6 @@ http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout 8dp 48dp + 92dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 40b3e4db..0433073d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -125,6 +125,7 @@ Larger Title Box Alternative Progress Slider Show Card below Playback Controllers + Hide bottom bar No equalizer found. "No audio ID, play something and try again." Open Navigation Drawer @@ -161,6 +162,7 @@ Uses a progressbar which does not cover the album art instead of the default progress slider. Displays a card below the playback controller buttons (play/pause etc.). Bypass the Media Store, which can increase the album artwork quality but causes slower image loading times. Only enable this if you have problems with low resolution artworks. + Hides the bar with the current playing information at the bottom. You can still fling the play/pause button in any direction to open the now playing view. "Could not download a matching album cover." Search your library… Rescanning media… diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml index 4ca75098..dcb8f85e 100644 --- a/app/src/main/res/xml/pref_general.xml +++ b/app/src/main/res/xml/pref_general.xml @@ -3,15 +3,23 @@ + +