From 823f0ca8564665e3866675c6b4179593b6239dd9 Mon Sep 17 00:00:00 2001 From: simonfi Date: Thu, 23 Mar 2017 08:54:06 +1300 Subject: [PATCH 1/3] start to resize status bar area based on device dimensions so that devices with nonstandard status bars don't draw the app window beneath the statusbar. --- .../fragments/mainactivity/library/LibraryFragment.java | 9 +++++++++ .../ui/fragments/player/flat/FlatPlayerFragment.java | 7 +++++++ .../main/java/com/kabouzeid/gramophone/util/Util.java | 8 ++++++++ 3 files changed, 24 insertions(+) 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 ab2487af..9aa3cfbc 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 @@ -57,6 +57,8 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde AppBarLayout appbar; @BindView(R.id.pager) ViewPager pager; + @BindView(R.id.status_bar) + View statusBar; private MusicLibraryPagerAdapter pagerAdapter; private MaterialCab cab; @@ -90,6 +92,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde setUpToolbar(); setUpViewPager(); + setUpStatusBar(); } private void setUpToolbar() { @@ -122,6 +125,12 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde pager.addOnPageChangeListener(this); } + private void setUpStatusBar() { + ViewGroup.LayoutParams layoutParams = statusBar.getLayoutParams(); + layoutParams.height = Util.getStatusBarHeight(getMainActivity()); + statusBar.setLayoutParams(layoutParams); + } + public Fragment getCurrentFragment() { return pagerAdapter.getFragment(pager.getCurrentItem()); } 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 d80dbd57..85747263 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 @@ -114,6 +114,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum impl.init(); setUpPlayerToolbar(); + setUpStatusBar(); setUpSubFragments(); setUpRecyclerView(); @@ -230,6 +231,12 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum toolbar.setOnMenuItemClickListener(this); } + private void setUpStatusBar() { + ViewGroup.LayoutParams layoutParams = playerStatusBar.getLayoutParams(); + layoutParams.height = Util.getStatusBarHeight(getActivity()); + playerStatusBar.setLayoutParams(layoutParams); + } + @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java index 567f782a..b71c550b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/Util.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/Util.java @@ -135,4 +135,12 @@ public class Util { } } + public static int getStatusBarHeight(final Context context) { + int result = 0; + int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + result = context.getResources().getDimensionPixelSize(resourceId); + } + return result; + } } \ No newline at end of file From 3d49373f26d3caded3d25ba1c1451d8a81511664 Mon Sep 17 00:00:00 2001 From: simonfi Date: Thu, 30 Mar 2017 11:45:04 +1300 Subject: [PATCH 2/3] implement dynamically sized status bar in *most of the activities/fragments. --- .../kabouzeid/gramophone/ui/activities/AboutActivity.java | 4 ++++ .../gramophone/ui/activities/AlbumDetailActivity.java | 4 ++++ .../gramophone/ui/activities/ArtistDetailActivity.java | 4 ++++ .../gramophone/ui/activities/PlaylistDetailActivity.java | 4 ++++ .../kabouzeid/gramophone/ui/activities/SearchActivity.java | 4 ++++ .../gramophone/ui/activities/SettingsActivity.java | 4 ++++ .../ui/fragments/player/card/CardPlayerFragment.java | 4 ++++ .../ui/fragments/player/flat/FlatPlayerFragment.java | 1 + .../main/java/com/kabouzeid/gramophone/util/ViewUtil.java | 7 +++++++ app/src/main/res/layout/shadow_statusbar_toolbar.xml | 1 + 10 files changed, 37 insertions(+) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java index 71ddbe33..3af15a4f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java @@ -21,6 +21,7 @@ import com.kabouzeid.gramophone.dialogs.DonationsDialog; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; import com.kabouzeid.gramophone.ui.activities.bugreport.BugReportActivity; import com.kabouzeid.gramophone.ui.activities.intro.AppIntroActivity; +import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.BindView; import butterknife.ButterKnife; @@ -91,6 +92,8 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen AppCompatButton maartenCorpelGooglePlus; @BindView(R.id.aleksandar_tesic_google_plus) AppCompatButton aleksandarTesicGooglePlus; + @BindView(R.id.status_bar) + View statusBar; @Override protected void onCreate(Bundle savedInstanceState) { @@ -102,6 +105,7 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen setStatusbarColorAuto(); setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); + ViewUtil.setStatusBarHeight(this, statusBar); setUpViews(); } 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 20de7ebf..c3929f9d 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 @@ -44,6 +44,7 @@ import com.kabouzeid.gramophone.ui.activities.tageditor.AlbumTagEditorActivity; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.Util; +import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.BindView; import butterknife.ButterKnife; @@ -71,6 +72,8 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements TextView albumTitleView; @BindView(R.id.list_background) View songsBackgroundView; + @BindView(R.id.status_bar) + View statusBar; private AlbumSongAdapter adapter; @@ -92,6 +95,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setUpObservableListViewParams(); setUpToolBar(); setUpViews(); + ViewUtil.setStatusBarHeight(this, statusBar); getSupportLoaderManager().initLoader(LOADER_ID, getIntent().getExtras(), this); } 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 ccf973a5..51212268 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 @@ -54,6 +54,7 @@ import com.kabouzeid.gramophone.util.ArtistSignatureUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.Util; +import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.BindView; import butterknife.ButterKnife; @@ -81,6 +82,8 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement TextView artistName; @BindView(R.id.toolbar) Toolbar toolbar; + @BindView(R.id.status_bar) + View statusBar; View songListHeader; RecyclerView albumRecyclerView; @@ -114,6 +117,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement setUpObservableListViewParams(); setUpViews(); setUpToolbar(); + ViewUtil.setStatusBarHeight(this, statusBar); getSupportLoaderManager().initLoader(LOADER_ID, getIntent().getExtras(), this); } 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 ad403225..e5ace2cb 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 @@ -37,6 +37,7 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PlaylistsUtil; +import com.kabouzeid.gramophone.util.ViewUtil; import java.util.ArrayList; import java.util.List; @@ -59,6 +60,8 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme Toolbar toolbar; @BindView(android.R.id.empty) TextView empty; + @BindView(R.id.status_bar) + View statusBar; private Playlist playlist; @@ -77,6 +80,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme setStatusbarColorAuto(); setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); + ViewUtil.setStatusBarHeight(this, statusBar); playlist = getIntent().getExtras().getParcelable(EXTRA_PLAYLIST); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java index 2947c15c..e410618a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SearchActivity.java @@ -27,6 +27,7 @@ import com.kabouzeid.gramophone.loader.SongLoader; import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity; import com.kabouzeid.gramophone.util.Util; +import com.kabouzeid.gramophone.util.ViewUtil; import java.util.ArrayList; import java.util.Collections; @@ -46,6 +47,8 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie Toolbar toolbar; @BindView(android.R.id.empty) TextView empty; + @BindView(R.id.status_bar) + View statusBar; SearchView searchView; @@ -62,6 +65,7 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie setStatusbarColorAuto(); setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); + ViewUtil.setStatusBarHeight(this, statusBar); recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new SearchAdapter(this, Collections.emptyList()); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java index 858c28c8..002ee600 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/SettingsActivity.java @@ -30,6 +30,7 @@ import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreferenceDialog; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; +import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.BindView; import butterknife.ButterKnife; @@ -39,6 +40,8 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia @BindView(R.id.toolbar) Toolbar toolbar; + @BindView(R.id.status_bar) + View statusBar; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -50,6 +53,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia setStatusbarColorAuto(); setNavigationbarColorAuto(); setTaskDescriptionColorAuto(); + ViewUtil.setStatusBarHeight(this, statusBar); toolbar.setBackgroundColor(ThemeStore.primaryColor(this)); setSupportActionBar(toolbar); 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 55b3c09f..38c460a6 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 @@ -232,6 +232,10 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum } }); toolbar.setOnMenuItemClickListener(this); + + ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams)toolbar.getLayoutParams(); + lp.setMargins(lp.leftMargin, Util.getStatusBarHeight(getActivity()), lp.rightMargin, lp.bottomMargin); + toolbar.requestLayout(); } @Override 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 85747263..91c1e78e 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 @@ -116,6 +116,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum setUpPlayerToolbar(); setUpStatusBar(); setUpSubFragments(); + ViewUtil.setStatusBarHeight(getActivity(), playerStatusBar); setUpRecyclerView(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java index db92315a..0974cb59 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/ViewUtil.java @@ -16,6 +16,7 @@ import android.support.annotation.ColorInt; import android.support.v4.view.ViewCompat; import android.util.DisplayMetrics; import android.view.View; +import android.view.ViewGroup; import android.view.animation.PathInterpolator; import android.widget.TextView; @@ -96,4 +97,10 @@ public class ViewUtil { DisplayMetrics metrics = resources.getDisplayMetrics(); return px / metrics.density; } + + public static void setStatusBarHeight(final Context context, View statusBar) { + ViewGroup.LayoutParams lp = statusBar.getLayoutParams(); + lp.height = Util.getStatusBarHeight(context); + statusBar.requestLayout(); + } } \ No newline at end of file diff --git a/app/src/main/res/layout/shadow_statusbar_toolbar.xml b/app/src/main/res/layout/shadow_statusbar_toolbar.xml index 94e0e1d4..772bff6b 100644 --- a/app/src/main/res/layout/shadow_statusbar_toolbar.xml +++ b/app/src/main/res/layout/shadow_statusbar_toolbar.xml @@ -11,6 +11,7 @@ android:layout_height="wrap_content"> From 0e8ea42dc94b3b76b140741ca012f2939c5de1b3 Mon Sep 17 00:00:00 2001 From: simonfi Date: Thu, 6 Apr 2017 13:29:07 +1200 Subject: [PATCH 3/3] add some more fragments to those which dynamically resize their status bars. --- .../mainactivity/folders/FoldersFragment.java | 3 +++ .../mainactivity/library/LibraryFragment.java | 2 ++ .../ui/fragments/player/card/CardPlayerFragment.java | 10 ++++++---- 3 files changed, 11 insertions(+), 4 deletions(-) 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 52e815fd..bc6cb58e 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 @@ -92,6 +92,8 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi AppBarLayout appbar; @BindView(R.id.recycler_view) FastScrollRecyclerView recyclerView; + @BindView(R.id.status_bar) + View statusBar; private SongFileAdapter adapter; private MaterialCab cab; @@ -168,6 +170,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi setUpBreadCrumbs(); setUpRecyclerView(); setUpAdapter(); + ViewUtil.setStatusBarHeight(getActivity(), statusBar); } private void setUpAppbarColor() { 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 9aa3cfbc..97828cd0 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 @@ -39,6 +39,7 @@ import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.Util; +import com.kabouzeid.gramophone.util.ViewUtil; import butterknife.BindView; import butterknife.ButterKnife; @@ -93,6 +94,7 @@ public class LibraryFragment extends AbsMainActivityFragment implements CabHolde setUpToolbar(); setUpViewPager(); setUpStatusBar(); + ViewUtil.setStatusBarHeight(getActivity(), statusBar); } private void setUpToolbar() { 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 739cf30d..ce7d05d6 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 @@ -119,6 +119,12 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum setUpPlayerToolbar(); setUpSubFragments(); + // portrait view doesn't have a statusBar, so can't bind it up top as will throw an exception. + View statusBar = view.findViewById(R.id.status_bar); + if (statusBar != null) { + ViewUtil.setStatusBarHeight(getActivity(), statusBar); + } + setUpRecyclerView(); slidingUpPanelLayout.addPanelSlideListener(this); @@ -232,10 +238,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum } }); toolbar.setOnMenuItemClickListener(this); - - ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams)toolbar.getLayoutParams(); - lp.setMargins(lp.leftMargin, Util.getStatusBarHeight(getActivity()), lp.rightMargin, lp.bottomMargin); - toolbar.requestLayout(); } @Override