Option to hide the new bottom bar
This commit is contained in:
parent
89782ac3f3
commit
ec2e943a5d
13 changed files with 122 additions and 57 deletions
|
|
@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.ui.activities;
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
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.ColorUtil;
|
||||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||||
|
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||||
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
||||||
|
|
@ -89,7 +91,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
||||||
private int albumArtViewHeight;
|
private int albumArtViewHeight;
|
||||||
private int toolbarColor;
|
private int toolbarColor;
|
||||||
private float toolbarAlpha;
|
private float toolbarAlpha;
|
||||||
private int bottomOffset;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -179,7 +180,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpObservableListViewParams() {
|
private void setUpObservableListViewParams() {
|
||||||
bottomOffset = getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity);
|
|
||||||
albumArtViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height);
|
albumArtViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height);
|
||||||
toolbarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
toolbarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
||||||
int toolbarHeight = Util.getActionBarSize(this);
|
int toolbarHeight = Util.getActionBarSize(this);
|
||||||
|
|
@ -274,8 +274,8 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpRecyclerViewView() {
|
private void setUpRecyclerViewView() {
|
||||||
|
setUpRecyclerViewPadding();
|
||||||
recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
||||||
recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, bottomOffset);
|
|
||||||
final View contentView = getWindow().getDecorView().findViewById(android.R.id.content);
|
final View contentView = getWindow().getDecorView().findViewById(android.R.id.content);
|
||||||
contentView.post(new Runnable() {
|
contentView.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -289,6 +289,10 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setUpRecyclerViewPadding() {
|
||||||
|
recyclerView.setPadding(0, albumArtViewHeight + titleViewHeight, 0, getBottomOffset());
|
||||||
|
}
|
||||||
|
|
||||||
private void setUpToolBar() {
|
private void setUpToolBar() {
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
|
|
@ -417,4 +421,12 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
||||||
super.onMediaStoreChanged();
|
super.onMediaStoreChanged();
|
||||||
reloadDataSet();
|
reloadDataSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
super.onSharedPreferenceChanged(sharedPreferences, key);
|
||||||
|
if (key.equals(PreferenceUtil.HIDE_BOTTOM_BAR)) {
|
||||||
|
setUpRecyclerViewPadding();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.ui.activities;
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
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.ColorUtil;
|
||||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||||
|
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
import com.kabouzeid.gramophone.util.ViewUtil;
|
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||||
import com.kabouzeid.gramophone.views.SquareIfPlaceImageView;
|
import com.kabouzeid.gramophone.views.SquareIfPlaceImageView;
|
||||||
|
|
@ -98,7 +100,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
private int artistImageViewHeight;
|
private int artistImageViewHeight;
|
||||||
private int toolbarColor;
|
private int toolbarColor;
|
||||||
private float toolbarAlpha;
|
private float toolbarAlpha;
|
||||||
private int bottomOffset;
|
|
||||||
|
|
||||||
private Artist artist;
|
private Artist artist;
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
@ -187,7 +188,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
};
|
};
|
||||||
|
|
||||||
private void setUpObservableListViewParams() {
|
private void setUpObservableListViewParams() {
|
||||||
bottomOffset = getResources().getDimensionPixelSize(R.dimen.bottom_offset_fab_activity);
|
|
||||||
artistImageViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height);
|
artistImageViewHeight = getResources().getDimensionPixelSize(R.dimen.header_image_height);
|
||||||
toolbarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
toolbarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
||||||
int toolbarHeight = Util.getActionBarSize(this);
|
int toolbarHeight = Util.getActionBarSize(this);
|
||||||
|
|
@ -213,8 +213,8 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpSongListView() {
|
private void setUpSongListView() {
|
||||||
|
setUpSongListPadding();
|
||||||
songListView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
songListView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
||||||
songListView.setPadding(0, artistImageViewHeight + titleViewHeight, 0, bottomOffset);
|
|
||||||
songListView.addHeaderView(songListHeader);
|
songListView.addHeaderView(songListHeader);
|
||||||
|
|
||||||
songAdapter = new ArtistSongAdapter(this, loadSongDataSet(), this);
|
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() {
|
private void setUpAlbumRecyclerView() {
|
||||||
albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
|
albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
|
||||||
albumAdapter = new HorizontalAlbumAdapter(this, loadAlbumDataSet(), this);
|
albumAdapter = new HorizontalAlbumAdapter(this, loadAlbumDataSet(), this);
|
||||||
|
|
@ -477,4 +481,12 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
||||||
super.onMediaStoreChanged();
|
super.onMediaStoreChanged();
|
||||||
reloadDataSets();
|
reloadDataSets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
super.onSharedPreferenceChanged(sharedPreferences, key);
|
||||||
|
if (key.equals(PreferenceUtil.HIDE_BOTTOM_BAR)) {
|
||||||
|
setUpSongListPadding();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -90,6 +90,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
@Nullable
|
@Nullable
|
||||||
private View navigationDrawerHeader;
|
private View navigationDrawerHeader;
|
||||||
|
|
||||||
|
private ArrayList<HideBottomBarListener> hideBottomBarListeners = new ArrayList<>();
|
||||||
|
|
||||||
|
public interface HideBottomBarListener {
|
||||||
|
void onBottomBarHiddenStateChanged(boolean hidden);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
@ -127,7 +133,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
for (final PagerAdapter.MusicFragments fragment : fragments) {
|
for (final PagerAdapter.MusicFragments fragment : fragments) {
|
||||||
pagerAdapter.add(fragment.getFragmentClass(), null);
|
pagerAdapter.add(fragment.getFragmentClass(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
pager.setAdapter(pagerAdapter);
|
pager.setAdapter(pagerAdapter);
|
||||||
pager.setOffscreenPageLimit(pagerAdapter.getCount() - 1);
|
pager.setOffscreenPageLimit(pagerAdapter.getCount() - 1);
|
||||||
|
|
||||||
|
|
@ -576,4 +581,26 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
||||||
super.onPanelCollapsed(view);
|
super.onPanelCollapsed(view);
|
||||||
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v7.widget.GridLayoutManager;
|
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.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||||
import com.kabouzeid.gramophone.util.PlaylistsUtil;
|
import com.kabouzeid.gramophone.util.PlaylistsUtil;
|
||||||
|
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -77,6 +79,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpRecyclerView() {
|
private void setUpRecyclerView() {
|
||||||
|
setUpRecyclerViewPadding();
|
||||||
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
|
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
|
||||||
if (playlist instanceof AbsSmartPlaylist) {
|
if (playlist instanceof AbsSmartPlaylist) {
|
||||||
adapter = new SmartPlaylistSongAdapter(this, loadSmartPlaylistDataSet(), R.layout.item_list, false, this);
|
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() {
|
private void reloadDataSet() {
|
||||||
if (playlist instanceof AbsSmartPlaylist) {
|
if (playlist instanceof AbsSmartPlaylist) {
|
||||||
adapter.swapDataSet(loadSmartPlaylistDataSet());
|
adapter.swapDataSet(loadSmartPlaylistDataSet());
|
||||||
|
|
@ -203,6 +210,14 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
||||||
reloadDataSet();
|
reloadDataSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||||
|
super.onSharedPreferenceChanged(sharedPreferences, key);
|
||||||
|
if (key.equals(PreferenceUtil.HIDE_BOTTOM_BAR)) {
|
||||||
|
setUpRecyclerViewPadding();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void checkIsEmpty() {
|
private void checkIsEmpty() {
|
||||||
empty.setVisibility(
|
empty.setVisibility(
|
||||||
adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE
|
adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ import butterknife.ButterKnife;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
* @author Karim Abou Zeid (kabouzeid)
|
||||||
* <p>
|
* <p/>
|
||||||
* Do not use {@link #setContentView(int)} but wrap your layout with
|
* Do not use {@link #setContentView(int)} but wrap your layout with
|
||||||
* {@link #wrapSlidingMusicPanelAndFab(int)} first and then return it in {@link #createContentView()}
|
* {@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();
|
showPlaybackControllerCard = PreferenceUtil.getInstance(this).playbackControllerCardNowPlaying();
|
||||||
setUpPlaybackControllerCard();
|
setUpPlaybackControllerCard();
|
||||||
break;
|
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() {
|
private void setUpMiniPlayer() {
|
||||||
|
hideBottomBar(PreferenceUtil.getInstance(this).hideBottomBar());
|
||||||
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
|
final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
|
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
|
||||||
|
|
@ -403,6 +407,18 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
||||||
return slidingUpPanelLayout;
|
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) {
|
protected void updateFabState(boolean animate) {
|
||||||
if (playPauseDrawable == null) {
|
if (playPauseDrawable == null) {
|
||||||
playPauseDrawable = new PlayPauseDrawable(this);
|
playPauseDrawable = new PlayPauseDrawable(this);
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
|
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
|
||||||
|
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||||
import com.kabouzeid.gramophone.views.FastScroller;
|
import com.kabouzeid.gramophone.views.FastScroller;
|
||||||
|
|
||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
|
|
@ -23,7 +24,7 @@ import butterknife.ButterKnife;
|
||||||
/**
|
/**
|
||||||
* @author Karim Abou Zeid (kabouzeid)
|
* @author Karim Abou Zeid (kabouzeid)
|
||||||
*/
|
*/
|
||||||
public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView.Adapter, LM extends RecyclerView.LayoutManager> extends AbsMainActivityFragment implements OnOffsetChangedListener, MusicServiceEventListener {
|
public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView.Adapter, LM extends RecyclerView.LayoutManager> extends AbsMainActivityFragment implements OnOffsetChangedListener, MusicServiceEventListener, MainActivity.HideBottomBarListener {
|
||||||
|
|
||||||
public static final String TAG = AbsMainActivityRecyclerViewFragment.class.getSimpleName();
|
public static final String TAG = AbsMainActivityRecyclerViewFragment.class.getSimpleName();
|
||||||
|
|
||||||
|
|
@ -56,6 +57,7 @@ public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView
|
||||||
|
|
||||||
getMainActivity().addOnAppBarOffsetChangedListener(this);
|
getMainActivity().addOnAppBarOffsetChangedListener(this);
|
||||||
getMainActivity().addMusicStateListenerListener(this);
|
getMainActivity().addMusicStateListenerListener(this);
|
||||||
|
getMainActivity().addHideBottomBarListener(this);
|
||||||
|
|
||||||
setUpRecyclerView();
|
setUpRecyclerView();
|
||||||
|
|
||||||
|
|
@ -63,10 +65,15 @@ public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpRecyclerView() {
|
private void setUpRecyclerView() {
|
||||||
|
setUpRecyclerViewPadding();
|
||||||
invalidateLayoutManager();
|
invalidateLayoutManager();
|
||||||
invalidateAdapter();
|
invalidateAdapter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setUpRecyclerViewPadding() {
|
||||||
|
recyclerView.setPadding(0, 0, 0, getMainActivity().getBottomOffset());
|
||||||
|
}
|
||||||
|
|
||||||
protected void invalidateAdapter() {
|
protected void invalidateAdapter() {
|
||||||
adapter = createAdapter();
|
adapter = createAdapter();
|
||||||
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
|
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
|
||||||
|
|
@ -129,6 +136,11 @@ public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBottomBarHiddenStateChanged(boolean hidden) {
|
||||||
|
setUpRecyclerViewPadding();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enableViews() {
|
public void enableViews() {
|
||||||
super.enableViews();
|
super.enableViews();
|
||||||
|
|
@ -170,6 +182,7 @@ public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
getMainActivity().removeOnAppBarOffsetChangedListener(this);
|
getMainActivity().removeOnAppBarOffsetChangedListener(this);
|
||||||
getMainActivity().removeMusicStateListenerListener(this);
|
getMainActivity().removeMusicStateListenerListener(this);
|
||||||
|
getMainActivity().removeHideBottomBarListener(this);
|
||||||
ButterKnife.unbind(this);
|
ButterKnife.unbind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
import com.kabouzeid.gramophone.helper.SortOrder;
|
import com.kabouzeid.gramophone.helper.SortOrder;
|
||||||
|
|
@ -52,6 +51,8 @@ public final class PreferenceUtil {
|
||||||
|
|
||||||
public static final String IGNORE_MEDIA_STORE_ARTWORK = "ignore_media_store_artwork";
|
public static final String IGNORE_MEDIA_STORE_ARTWORK = "ignore_media_store_artwork";
|
||||||
|
|
||||||
|
public static final String HIDE_BOTTOM_BAR = "hide_bottom_bar";
|
||||||
|
|
||||||
private static PreferenceUtil sInstance;
|
private static PreferenceUtil sInstance;
|
||||||
|
|
||||||
private final SharedPreferences mPreferences;
|
private final SharedPreferences mPreferences;
|
||||||
|
|
@ -186,35 +187,33 @@ public final class PreferenceUtil {
|
||||||
return mPreferences.getBoolean(IGNORE_MEDIA_STORE_ARTWORK, false);
|
return mPreferences.getBoolean(IGNORE_MEDIA_STORE_ARTWORK, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
public final boolean hideBottomBar() {
|
||||||
|
return mPreferences.getBoolean(HIDE_BOTTOM_BAR, false);
|
||||||
|
}
|
||||||
|
|
||||||
public final String getArtistSortOrder() {
|
public final String getArtistSortOrder() {
|
||||||
return mPreferences.getString(ARTIST_SORT_ORDER, SortOrder.ArtistSortOrder.ARTIST_A_Z);
|
return mPreferences.getString(ARTIST_SORT_ORDER, SortOrder.ArtistSortOrder.ARTIST_A_Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public final String getArtistSongSortOrder() {
|
public final String getArtistSongSortOrder() {
|
||||||
return mPreferences.getString(ARTIST_SONG_SORT_ORDER,
|
return mPreferences.getString(ARTIST_SONG_SORT_ORDER,
|
||||||
SortOrder.ArtistSongSortOrder.SONG_A_Z);
|
SortOrder.ArtistSongSortOrder.SONG_A_Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public final String getArtistAlbumSortOrder() {
|
public final String getArtistAlbumSortOrder() {
|
||||||
return mPreferences.getString(ARTIST_ALBUM_SORT_ORDER,
|
return mPreferences.getString(ARTIST_ALBUM_SORT_ORDER,
|
||||||
SortOrder.ArtistAlbumSortOrder.ALBUM_YEAR_ASC);
|
SortOrder.ArtistAlbumSortOrder.ALBUM_YEAR_ASC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public final String getAlbumSortOrder() {
|
public final String getAlbumSortOrder() {
|
||||||
return mPreferences.getString(ALBUM_SORT_ORDER, SortOrder.AlbumSortOrder.ALBUM_A_Z);
|
return mPreferences.getString(ALBUM_SORT_ORDER, SortOrder.AlbumSortOrder.ALBUM_A_Z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public final String getAlbumSongSortOrder() {
|
public final String getAlbumSongSortOrder() {
|
||||||
return mPreferences.getString(ALBUM_SONG_SORT_ORDER,
|
return mPreferences.getString(ALBUM_SONG_SORT_ORDER,
|
||||||
SortOrder.AlbumSongSortOrder.SONG_TRACK_LIST);
|
SortOrder.AlbumSongSortOrder.SONG_TRACK_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public final String getSongSortOrder() {
|
public final String getSongSortOrder() {
|
||||||
return mPreferences.getString(SONG_SORT_ORDER, SortOrder.SongSortOrder.SONG_A_Z);
|
return mPreferences.getString(SONG_SORT_ORDER, SortOrder.SongSortOrder.SONG_A_Z);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:divider="@null"
|
android:divider="@null"
|
||||||
android:dividerHeight="0px"
|
android:dividerHeight="0px"
|
||||||
android:paddingBottom="@dimen/bottom_offset_fab_activity"
|
|
||||||
android:scrollbars="vertical" />
|
android:scrollbars="vertical" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<android.support.v7.widget.RecyclerView
|
||||||
android:paddingBottom="@dimen/bottom_offset_fab_activity"
|
|
||||||
android:id="@+id/recycler_view"
|
android:id="@+id/recycler_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/smart_playlist_container"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical" />
|
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
|
||||||
android:id="@+id/recycler_view"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:clipToPadding="false"
|
|
||||||
android:paddingBottom="@dimen/bottom_offset_fab_activity"
|
|
||||||
android:scrollbars="none" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@android:id/empty"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:fontFamily="sans-serif-light"
|
|
||||||
android:text="@string/empty"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
android:textSize="@dimen/empty_text_size" />
|
|
||||||
|
|
||||||
<com.kabouzeid.gramophone.views.FastScroller
|
|
||||||
android:id="@+id/fast_scroller"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="end" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
@ -44,8 +44,6 @@ http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
|
||||||
<dimen name="widget_medium_image_size">96dp</dimen>
|
<dimen name="widget_medium_image_size">96dp</dimen>
|
||||||
<dimen name="notification_big_image_size">128dp</dimen>
|
<dimen name="notification_big_image_size">128dp</dimen>
|
||||||
|
|
||||||
<dimen name="bottom_offset_fab_activity">44dp</dimen>
|
|
||||||
|
|
||||||
<dimen name="scrollbar_width">8dp</dimen>
|
<dimen name="scrollbar_width">8dp</dimen>
|
||||||
<dimen name="scrollbar_inset">8dp</dimen>
|
<dimen name="scrollbar_inset">8dp</dimen>
|
||||||
<!-- MUST BE THE RESULT OF WIDTH PLUS INSET-->
|
<!-- MUST BE THE RESULT OF WIDTH PLUS INSET-->
|
||||||
|
|
@ -69,5 +67,6 @@ http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
|
||||||
<dimen name="list_item_image_icon_padding">8dp</dimen>
|
<dimen name="list_item_image_icon_padding">8dp</dimen>
|
||||||
|
|
||||||
<dimen name="mini_player_height">48dp</dimen>
|
<dimen name="mini_player_height">48dp</dimen>
|
||||||
|
<dimen name="bottom_offset_fab_activity">92dp</dimen>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -125,6 +125,7 @@
|
||||||
<string name="pref_title_larger_title_box_now_playing">Larger Title Box</string>
|
<string name="pref_title_larger_title_box_now_playing">Larger Title Box</string>
|
||||||
<string name="pref_title_alternative_progress_slider_now_playing">Alternative Progress Slider</string>
|
<string name="pref_title_alternative_progress_slider_now_playing">Alternative Progress Slider</string>
|
||||||
<string name="pref_title_playback_controller_card_now_playing">Show Card below Playback Controllers</string>
|
<string name="pref_title_playback_controller_card_now_playing">Show Card below Playback Controllers</string>
|
||||||
|
<string name="pref_title_hide_bottom_bar">Hide bottom bar</string>
|
||||||
<string name="no_equalizer">No equalizer found.</string>
|
<string name="no_equalizer">No equalizer found.</string>
|
||||||
<string name="no_audio_ID">"No audio ID, play something and try again."</string>
|
<string name="no_audio_ID">"No audio ID, play something and try again."</string>
|
||||||
<string name="navigation_drawer_open">Open Navigation Drawer</string>
|
<string name="navigation_drawer_open">Open Navigation Drawer</string>
|
||||||
|
|
@ -161,6 +162,7 @@
|
||||||
<string name="pref_summary_alternative_progress_slider_now_playing">Uses a progressbar which does not cover the album art instead of the default progress slider.</string>
|
<string name="pref_summary_alternative_progress_slider_now_playing">Uses a progressbar which does not cover the album art instead of the default progress slider.</string>
|
||||||
<string name="pref_summary_playback_controller_card_now_playing">Displays a card below the playback controller buttons (play/pause etc.).</string>
|
<string name="pref_summary_playback_controller_card_now_playing">Displays a card below the playback controller buttons (play/pause etc.).</string>
|
||||||
<string name="pref_summary_ignore_media_store_artwork">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.</string>
|
<string name="pref_summary_ignore_media_store_artwork">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.</string>
|
||||||
|
<string name="pref_summary_hide_bottom_bar">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.</string>
|
||||||
<string name="could_not_download_album_cover">"Could not download a matching album cover."</string>
|
<string name="could_not_download_album_cover">"Could not download a matching album cover."</string>
|
||||||
<string name="search_hint">Search your library…</string>
|
<string name="search_hint">Search your library…</string>
|
||||||
<string name="rescanning_media">Rescanning media…</string>
|
<string name="rescanning_media">Rescanning media…</string>
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,23 @@
|
||||||
<com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_general">
|
<com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_general">
|
||||||
|
|
||||||
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
||||||
android:layout="@layout/preference_custom"
|
|
||||||
android:defaultValue="-1"
|
android:defaultValue="-1"
|
||||||
android:entries="@array/pref_start_page_list_titles"
|
android:entries="@array/pref_start_page_list_titles"
|
||||||
android:entryValues="@array/pref_start_page_list_values"
|
android:entryValues="@array/pref_start_page_list_values"
|
||||||
android:key="default_start_page"
|
android:key="default_start_page"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:negativeButtonText="@null"
|
android:negativeButtonText="@null"
|
||||||
android:positiveButtonText="@null"
|
android:positiveButtonText="@null"
|
||||||
android:title="@string/pref_title_set_default_start_page" />
|
android:title="@string/pref_title_set_default_start_page" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="false"
|
||||||
|
android:key="hide_bottom_bar"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:summary="@string/pref_summary_hide_bottom_bar"
|
||||||
|
android:title="@string/pref_title_hide_bottom_bar"
|
||||||
|
android:widgetLayout="@layout/preference_dynamic_checkbox" />
|
||||||
|
|
||||||
</com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory>
|
</com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue