From d7f57bb1f1390c216bacebe2fb04224d4c27842c Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 27 Dec 2015 22:28:54 +0100 Subject: [PATCH] Use marshmallows dark statusbar icons on light primary colors. --- .../ui/activities/AboutActivity.java | 4 ++- .../ui/activities/MainActivity.java | 31 ++++++++++++++++--- .../ui/activities/PlaylistDetailActivity.java | 8 +++-- .../ui/activities/SettingsActivity.java | 5 ++- .../base/AbsSlidingMusicPanelActivity.java | 11 +++++++ .../ui/activities/base/AbsThemeActivity.java | 12 +++++++ .../tageditor/AbsTagEditorActivity.java | 12 +++++-- .../ui/fragments/player/PlayerFragment.java | 4 ++- 8 files changed, 75 insertions(+), 12 deletions(-) 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 3698daec..5fb4f6ea 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 @@ -243,7 +243,9 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen @Override public boolean onCreateOptionsMenu(Menu menu) { - ViewUtil.setToolbarContentColorForBackground(this, toolbar, getThemeColorPrimary()); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()); + ViewUtil.setToolbarContentDark(this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); return super.onCreateOptionsMenu(menu); } } 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 62e7c94a..30bc464d 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 @@ -71,7 +71,7 @@ import butterknife.Bind; import butterknife.ButterKnife; public class MainActivity extends AbsSlidingMusicPanelActivity - implements KabViewsDisableAble, CabHolder { + implements KabViewsDisableAble, CabHolder, DrawerLayout.DrawerListener { public static final String TAG = MainActivity.class.getSimpleName(); @@ -223,7 +223,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity public void run() { DonationDialog.create().show(getSupportFragmentManager(), "DONATION_DIALOG"); } - }, 300); + }, 200); break; case R.id.nav_settings: new Handler().postDelayed(new Runnable() { @@ -239,7 +239,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity public void run() { startActivity(new Intent(MainActivity.this, AboutActivity.class)); } - }, 300); + }, 200); break; } return true; @@ -249,6 +249,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity private void setUpDrawerLayout() { setUpNavigationView(); + drawerLayout.setDrawerListener(this); } private void updateNavigationDrawerHeader() { @@ -339,7 +340,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity menu.removeItem(R.id.action_grid_size); menu.removeItem(R.id.action_colored_footers); } - ViewUtil.setToolbarContentColorForBackground(this, toolbar, getThemeColorPrimary()); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()); + ViewUtil.setToolbarContentDark(this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); return true; } @@ -614,4 +617,24 @@ public class MainActivity extends AbsSlidingMusicPanelActivity e.printStackTrace(); } } + + @Override + public void onDrawerSlide(View drawerView, float slideOffset) { + + } + + @Override + public void onDrawerOpened(View drawerView) { + setUseDarkStatusBarIcons(false); + } + + @Override + public void onDrawerClosed(View drawerView) { + setUseDarkStatusBarIcons(ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary())); + } + + @Override + public void onDrawerStateChanged(int newState) { + + } } \ 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 73c56a96..ec830738 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 @@ -159,7 +159,9 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_playlist_detail, menu); - ViewUtil.setToolbarContentColorForBackground(this, toolbar, getThemeColorPrimary()); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()); + ViewUtil.setToolbarContentDark(this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); return true; } @@ -217,7 +219,9 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme @Override public void onPause() { - recyclerViewDragDropManager.cancelDrag(); + if (recyclerViewDragDropManager != null) { + recyclerViewDragDropManager.cancelDrag(); + } super.onPause(); } 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 97ed9288..99a03575 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 @@ -22,6 +22,7 @@ import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.prefs.ColorChooserPreference; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; +import com.kabouzeid.gramophone.util.ColorUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.ViewUtil; @@ -80,7 +81,9 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia @Override public boolean onCreateOptionsMenu(Menu menu) { - ViewUtil.setToolbarContentColorForBackground(this, toolbar, getThemeColorPrimary()); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()); + ViewUtil.setToolbarContentDark(this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); return super.onCreateOptionsMenu(menu); } 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 c9730d08..00080515 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 @@ -35,6 +35,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi private int navigationBarColor; private int taskColor; + private boolean useDarkStatusBarIcons; private AbsPlayerFragment playerFragment; private MiniPlayerFragment miniPlayerFragment; @@ -99,6 +100,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi @Override public void onPanelCollapsed(View view) { + super.setUseDarkStatusBarIcons(useDarkStatusBarIcons); super.notifyTaskColorChange(taskColor); if (shouldColorNavigationBar()) { super.setNavigationBarColor(navigationBarColor); @@ -110,6 +112,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi @Override public void onPanelExpanded(View view) { + super.setUseDarkStatusBarIcons(false); int playerFragmentColor = playerFragment.getPaletteColor(); super.notifyTaskColorChange(playerFragmentColor); if (shouldColorNavigationBar()) { @@ -179,6 +182,14 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi super.onBackPressed(); } + @Override + protected void setUseDarkStatusBarIcons(boolean useDarkIcons) { + useDarkStatusBarIcons = useDarkIcons; + if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { + super.setUseDarkStatusBarIcons(useDarkIcons); + } + } + @Override protected void setNavigationBarColor(@ColorInt int color) { this.navigationBarColor = color; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsThemeActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsThemeActivity.java index 38bf876e..3ebd517a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsThemeActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsThemeActivity.java @@ -151,6 +151,18 @@ public abstract class AbsThemeActivity extends AppCompatActivity implements KabV getWindow().setStatusBarColor(ColorUtil.shiftColorDown(color)); } } + + } + + protected void setUseDarkStatusBarIcons(boolean useDarkIcons) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + int systemUiVisibility = getWindow().getDecorView().getSystemUiVisibility(); + if (useDarkIcons) { + getWindow().getDecorView().setSystemUiVisibility(systemUiVisibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + getWindow().getDecorView().setSystemUiVisibility(systemUiVisibility & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } + } } protected final void setNavigationBarThemeColor() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java index 84cd4247..53d0b520 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java @@ -208,7 +208,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { if (shouldColorNavigationBar()) setNavigationBarColor(paletteColorPrimary); header.setBackgroundColor(paletteColorPrimary); - ViewUtil.setToolbarContentColorForBackground(this, toolbar, paletteColorPrimary); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(paletteColorPrimary); + ViewUtil.setToolbarContentDark(this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); notifyTaskColorChange(paletteColorPrimary); } @@ -250,7 +252,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - ViewUtil.setToolbarContentColorForBackground(this, toolbar, paletteColorPrimary); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(paletteColorPrimary); + ViewUtil.setToolbarContentDark(this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); return super.onCreateOptionsMenu(menu); } @@ -313,7 +317,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { setNavigationBarColor(paletteColorPrimary); setStatusBarColor(paletteColorPrimary); header.setBackgroundColor(paletteColorPrimary); - ViewUtil.setToolbarContentColorForBackground(AbsTagEditorActivity.this, toolbar, paletteColorPrimary); + boolean darkContent = ColorUtil.useDarkTextColorOnBackground(paletteColorPrimary); + ViewUtil.setToolbarContentDark(AbsTagEditorActivity.this, toolbar, darkContent); + setUseDarkStatusBarIcons(darkContent); notifyTaskColorChange(paletteColorPrimary); } else { resetColors(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java index 9e5182ac..21bcb7aa 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlayerFragment.java @@ -147,7 +147,9 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove @Override public void onPause() { - recyclerViewDragDropManager.cancelDrag(); + if (recyclerViewDragDropManager != null) { + recyclerViewDragDropManager.cancelDrag(); + } super.onPause(); }