Use marshmallows dark statusbar icons on light primary colors.

This commit is contained in:
Karim Abou Zeid 2015-12-27 22:28:54 +01:00
commit d7f57bb1f1
8 changed files with 75 additions and 12 deletions

View file

@ -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);
}
}

View file

@ -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) {
}
}

View file

@ -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();
}

View file

@ -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);
}

View file

@ -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;

View file

@ -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() {

View file

@ -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();

View file

@ -147,7 +147,9 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
@Override
public void onPause() {
recyclerViewDragDropManager.cancelDrag();
if (recyclerViewDragDropManager != null) {
recyclerViewDragDropManager.cancelDrag();
}
super.onPause();
}