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 0dfe27df..adaef870 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 @@ -43,7 +43,6 @@ import com.kabouzeid.gramophone.ui.activities.intro.AppIntroActivity; import com.kabouzeid.gramophone.ui.fragments.mainactivity.folders.FoldersFragment; import com.kabouzeid.gramophone.ui.fragments.mainactivity.library.LibraryFragment; import com.kabouzeid.gramophone.util.PreferenceUtil; -import com.kabouzeid.gramophone.util.Util; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import java.util.ArrayList; @@ -76,19 +75,11 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setDrawUnderStatusbar(true); ButterKnife.bind(this); if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) { - Util.setStatusBarTranslucent(getWindow()); - drawerLayout.setFitsSystemWindows(false); - navigationView.setFitsSystemWindows(false); - //noinspection ConstantConditions - findViewById(R.id.drawer_content_container).setFitsSystemWindows(false); - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - drawerLayout.setOnApplyWindowInsetsListener((view, windowInsets) -> { - navigationView.dispatchApplyWindowInsets(windowInsets); - return windowInsets.replaceSystemWindowInsets(0, 0, 0, 0); - }); + navigationView.setFitsSystemWindows(false); // for header to go below statusbar } setUpDrawerLayout(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/AbsMainActivityFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/AbsMainActivityFragment.java index 9c7a3e0e..104f68c9 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/AbsMainActivityFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/AbsMainActivityFragment.java @@ -1,13 +1,8 @@ package com.kabouzeid.gramophone.ui.fragments.mainactivity; -import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.view.View; -import com.kabouzeid.appthemehelper.ThemeStore; -import com.kabouzeid.appthemehelper.util.ColorUtil; -import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.ui.activities.MainActivity; /** @@ -24,24 +19,4 @@ public abstract class AbsMainActivityFragment extends Fragment { super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); } - - // WORKAROUND - public void setStatusbarColor(View view, int color) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - final View statusBar = view.findViewById(R.id.status_bar); - if (statusBar != null) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - statusBar.setBackgroundColor(ColorUtil.darkenColor(color)); - getMainActivity().setLightStatusbarAuto(color); - } else { - statusBar.setBackgroundColor(color); - } - } - } - } - - public void setStatusbarColorAuto(View view) { - // we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat - setStatusbarColor(view, ThemeStore.primaryColor(getContext())); - } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java index ca3d44f4..4d136e7a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/folders/FoldersFragment.java @@ -156,7 +156,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - setStatusbarColorAuto(view); + getMainActivity().setStatusbarColorAuto(); getMainActivity().setNavigationbarColorAuto(); getMainActivity().setTaskDescriptionColorAuto(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java index 6991be37..1e11b85e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java @@ -90,7 +90,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { PreferenceUtil.getInstance(getActivity()).registerOnSharedPreferenceChangedListener(this); - setStatusbarColorAuto(view); + getMainActivity().setStatusbarColorAuto(); getMainActivity().setNavigationbarColorAuto(); getMainActivity().setTaskDescriptionColorAuto(); 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 71f82728..62a3e86b 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 @@ -463,10 +463,9 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum public AnimatorSet createDefaultColorChangeAnimatorSet(int newColor) { Animator backgroundAnimator; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - int topMargin = fragment.getResources().getDimensionPixelSize(R.dimen.status_bar_padding); //noinspection ConstantConditions int x = (int) (fragment.playbackControlsFragment.playPauseFab.getX() + fragment.playbackControlsFragment.playPauseFab.getWidth() / 2 + fragment.playbackControlsFragment.getView().getX()); - int y = (int) (topMargin + fragment.playbackControlsFragment.playPauseFab.getY() + fragment.playbackControlsFragment.playPauseFab.getHeight() / 2 + fragment.playbackControlsFragment.getView().getY()); + int y = (int) (fragment.playbackControlsFragment.playPauseFab.getY() + fragment.playbackControlsFragment.playPauseFab.getHeight() / 2 + fragment.playbackControlsFragment.getView().getY() + fragment.playbackControlsFragment.progressSlider.getHeight()); float startRadius = Math.max(fragment.playbackControlsFragment.playPauseFab.getWidth() / 2, fragment.playbackControlsFragment.playPauseFab.getHeight() / 2); float endRadius = Math.max(fragment.colorBackground.getWidth(), fragment.colorBackground.getHeight()); fragment.colorBackground.setBackgroundColor(newColor); @@ -552,10 +551,9 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum @Override public void setUpPanelAndAlbumCoverHeight() { WidthFitSquareLayout albumCoverContainer = fragment.getView().findViewById(R.id.album_cover_container); - int topMargin = fragment.getResources().getDimensionPixelSize(R.dimen.status_bar_padding); - final int availablePanelHeight = fragment.slidingUpPanelLayout.getHeight() - fragment.getView().findViewById(R.id.player_content).getHeight() + topMargin; - final int minPanelHeight = (int) ViewUtil.convertDpToPixel(72 + 24, fragment.getResources()) + topMargin; + final int availablePanelHeight = fragment.slidingUpPanelLayout.getHeight() - fragment.getView().findViewById(R.id.player_content).getHeight() + (int) ViewUtil.convertDpToPixel(8, fragment.getResources()); + final int minPanelHeight = (int) ViewUtil.convertDpToPixel(72 + 24, fragment.getResources()); if (availablePanelHeight < minPanelHeight) { albumCoverContainer.getLayoutParams().height = albumCoverContainer.getHeight() - (minPanelHeight - availablePanelHeight); albumCoverContainer.forceSquare(false); @@ -595,8 +593,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum @Override public void setUpPanelAndAlbumCoverHeight() { - int topMargin = fragment.getResources().getDimensionPixelSize(R.dimen.status_bar_padding); - int panelHeight = fragment.slidingUpPanelLayout.getHeight() - fragment.playbackControlsFragment.getView().getHeight() + topMargin; + int panelHeight = fragment.slidingUpPanelLayout.getHeight() - fragment.playbackControlsFragment.getView().getHeight(); fragment.slidingUpPanelLayout.setPanelHeight(panelHeight); ((AbsSlidingMusicPanelActivity) fragment.getActivity()).setAntiDragView(fragment.slidingUpPanelLayout.findViewById(R.id.player_panel)); diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/StatusBarMarginFrameLayout.java b/app/src/main/java/com/kabouzeid/gramophone/views/StatusBarMarginFrameLayout.java new file mode 100644 index 00000000..878cab91 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/views/StatusBarMarginFrameLayout.java @@ -0,0 +1,33 @@ +package com.kabouzeid.gramophone.views; + +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.WindowInsets; +import android.widget.FrameLayout; + +public class StatusBarMarginFrameLayout extends FrameLayout { + + + public StatusBarMarginFrameLayout(Context context) { + super(context); + } + + public StatusBarMarginFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public StatusBarMarginFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams(); + lp.topMargin = insets.getSystemWindowInsetTop(); + setLayoutParams(lp); + } + return super.onApplyWindowInsets(insets); + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/StatusBarView.java b/app/src/main/java/com/kabouzeid/gramophone/views/StatusBarView.java new file mode 100644 index 00000000..46c3d1fd --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/views/StatusBarView.java @@ -0,0 +1,34 @@ +package com.kabouzeid.gramophone.views; + +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowInsets; + +public class StatusBarView extends View { + + + public StatusBarView(Context context) { + super(context); + } + + public StatusBarView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public StatusBarView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + ViewGroup.LayoutParams lp = getLayoutParams(); + lp.height = insets.getSystemWindowInsetTop(); + setLayoutParams(lp); + } + return super.onApplyWindowInsets(insets); + } +} diff --git a/app/src/main/res/layout-land/fragment_card_player.xml b/app/src/main/res/layout-land/fragment_card_player.xml index 813846de..51886f1c 100644 --- a/app/src/main/res/layout-land/fragment_card_player.xml +++ b/app/src/main/res/layout-land/fragment_card_player.xml @@ -70,6 +70,7 @@ @@ -78,10 +79,10 @@ android:id="@+id/playing_queue_card" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" + android:layout_marginBottom="-8dp" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" - android:layout_marginTop="@dimen/status_bar_padding" + android:layout_marginTop="0dp" app:cardBackgroundColor="?cardBackgroundColor" app:cardElevation="@dimen/card_elevation" app:cardUseCompatPadding="false"> diff --git a/app/src/main/res/layout-land/fragment_flat_player.xml b/app/src/main/res/layout-land/fragment_flat_player.xml index 6762967e..65a8a1df 100644 --- a/app/src/main/res/layout-land/fragment_flat_player.xml +++ b/app/src/main/res/layout-land/fragment_flat_player.xml @@ -11,12 +11,12 @@ android:elevation="@dimen/toolbar_elevation" tools:ignore="UnusedAttribute"> - - diff --git a/app/src/main/res/layout/activity_main_content.xml b/app/src/main/res/layout/activity_main_content.xml index a9ee9c50..a9e82bc6 100644 --- a/app/src/main/res/layout/activity_main_content.xml +++ b/app/src/main/res/layout/activity_main_content.xml @@ -1,5 +1,22 @@ - \ No newline at end of file + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_drawer_layout.xml b/app/src/main/res/layout/activity_main_drawer_layout.xml index ead1e1e6..f70e5345 100644 --- a/app/src/main/res/layout/activity_main_drawer_layout.xml +++ b/app/src/main/res/layout/activity_main_drawer_layout.xml @@ -3,14 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent"> - + android:layout_height="match_parent" /> - - + + + + + + + + - + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/status_bar_padding" + android:orientation="vertical"> @@ -139,7 +151,7 @@ - + diff --git a/app/src/main/res/layout/fragment_flat_player.xml b/app/src/main/res/layout/fragment_flat_player.xml index 0d84e5ea..99885e41 100644 --- a/app/src/main/res/layout/fragment_flat_player.xml +++ b/app/src/main/res/layout/fragment_flat_player.xml @@ -8,12 +8,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"> - - diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml index 11840e70..c8768820 100644 --- a/app/src/main/res/layout/fragment_folder.xml +++ b/app/src/main/res/layout/fragment_folder.xml @@ -1,89 +1,72 @@ - - - - - - - - - + app:layout_scrollFlags="scroll|enterAlways"> - + + + + - - - - - - - - - - - - - - - - - - + android:layout_height="?attr/actionBarSize" /> - + - + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml index e402e90f..255b237a 100644 --- a/app/src/main/res/layout/fragment_library.xml +++ b/app/src/main/res/layout/fragment_library.xml @@ -1,67 +1,50 @@ - - - - - - - - - + app:layout_scrollFlags="scroll|enterAlways"> - + + + + + android:layout_height="?attr/actionBarSize" /> - + - - - - - - - - - - - + android:layout_height="@dimen/tab_height" + app:tabContentStart="72dp" + app:tabMode="scrollable" /> - + - + + + diff --git a/app/src/main/res/layout/shadow_statusbar_toolbar.xml b/app/src/main/res/layout/shadow_statusbar_toolbar.xml index 7ded9a25..9a3cea88 100644 --- a/app/src/main/res/layout/shadow_statusbar_toolbar.xml +++ b/app/src/main/res/layout/shadow_statusbar_toolbar.xml @@ -10,7 +10,7 @@ android:layout_height="wrap_content" android:orientation="vertical"> - diff --git a/app/src/main/res/layout/status_bar.xml b/app/src/main/res/layout/status_bar.xml index 87c5e1d5..83c3d4fd 100644 --- a/app/src/main/res/layout/status_bar.xml +++ b/app/src/main/res/layout/status_bar.xml @@ -1,5 +1,5 @@ -