Implemented app-theme-helper. Needs to be cleaned up.

This commit is contained in:
Karim Abou Zeid 2016-01-25 22:20:59 +01:00
commit 8b98a9be85
39 changed files with 275 additions and 1370 deletions

View file

@ -8,7 +8,6 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.AppCompatButton;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
@ -16,12 +15,12 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.ChangelogDialog;
import com.kabouzeid.gramophone.dialogs.DonationDialog;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.ViewUtil;
import butterknife.Bind;
import butterknife.ButterKnife;
@ -127,14 +126,14 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
setStatusBarTransparent();
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
setUpViews();
setStatusbarColorAuto();
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
setUpViews();
}
private void setUpViews() {
@ -145,7 +144,7 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen
}
private void setUpToolbar() {
toolbar.setBackgroundColor(getThemeColorPrimary());
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@ -273,12 +272,4 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen
.build()
.showAppCompat();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary());
ViewUtil.setToolbarContentDark(this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
return super.onCreateOptionsMenu(menu);
}
}

View file

@ -76,14 +76,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStatusBarTransparent();
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
supportPostponeEnterTransition();
if (shouldColorNavigationBar())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
getAlbumFromIntentExtras();
setUpObservableListViewParams();
setUpToolBar();
@ -110,7 +107,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
// Change alpha of overlay
toolbarAlpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
toolbar.setBackgroundColor(ColorUtil.getColorWithAlpha(toolbarAlpha, toolbarColor));
setStatusBarColor(ColorUtil.getColorWithAlpha(cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor));
setStatusbarColor(ColorUtil.getColorWithAlpha(cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor));
// Translate name text
int maxTitleTranslationY = albumArtViewHeight;
@ -179,15 +176,8 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
albumTitleView.setBackgroundColor(color);
albumTitleView.setTextColor(ColorUtil.getPrimaryTextColorForBackground(this, color));
if (shouldColorNavigationBar())
setNavigationBarColor(color);
notifyTaskColorChange(color);
}
@Override
protected boolean overridesTaskColor() {
return true;
setNavigationbarColor(color);
setTaskDescriptionColor(color);
}
@Override
@ -309,7 +299,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
.start(new MaterialCab.Callback() {
@Override
public boolean onCabCreated(MaterialCab materialCab, Menu menu) {
setStatusBarColor(ColorUtil.getOpaqueColor(toolbarColor));
setStatusbarColor(ColorUtil.getOpaqueColor(toolbarColor));
return callback.onCabCreated(materialCab, menu);
}
@ -320,7 +310,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
@Override
public boolean onCabFinished(MaterialCab materialCab) {
setStatusBarColor(ColorUtil.getColorWithAlpha(toolbarAlpha, toolbarColor));
setStatusbarColor(ColorUtil.getColorWithAlpha(toolbarAlpha, toolbarColor));
return callback.onCabFinished(materialCab);
}
});
@ -341,4 +331,10 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
super.onMediaStoreChanged();
refresh();
}
@Override
public void setStatusbarColor(int color) {
super.setStatusbarColor(color);
setLightStatusbar(false);
}
}

View file

@ -100,12 +100,9 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStatusBarTransparent();
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
if (shouldColorNavigationBar())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
lastFMRestClient = new LastFMRestClient(this);
getArtistFromIntentExtras();
@ -135,7 +132,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
// Change alpha of overlay
toolbarAlpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
toolbar.setBackgroundColor(ColorUtil.getColorWithAlpha(toolbarAlpha, toolbarColor));
setStatusBarColor(ColorUtil.getColorWithAlpha(cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor));
setStatusbarColor(ColorUtil.getColorWithAlpha(cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor));
// Translate name text
int maxTitleTranslationY = artistImageViewHeight;
@ -287,11 +284,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
});
}
@Override
protected boolean overridesTaskColor() {
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@ -309,11 +301,8 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
toolbarColor = vibrantColor;
artistName.setBackgroundColor(vibrantColor);
artistName.setTextColor(ColorUtil.getPrimaryTextColorForBackground(this, vibrantColor));
if (shouldColorNavigationBar())
setNavigationBarColor(vibrantColor);
notifyTaskColorChange(vibrantColor);
setNavigationbarColor(vibrantColor);
setTaskDescriptionColor(vibrantColor);
}
private void getArtistFromIntentExtras() {
@ -395,7 +384,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
.start(new MaterialCab.Callback() {
@Override
public boolean onCabCreated(MaterialCab materialCab, Menu menu) {
setStatusBarColor(ColorUtil.getOpaqueColor(toolbarColor));
setStatusbarColor(ColorUtil.getOpaqueColor(toolbarColor));
return callback.onCabCreated(materialCab, menu);
}
@ -406,7 +395,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
@Override
public boolean onCabFinished(MaterialCab materialCab) {
setStatusBarColor(ColorUtil.getColorWithAlpha(toolbarAlpha, toolbarColor));
setStatusbarColor(ColorUtil.getColorWithAlpha(toolbarAlpha, toolbarColor));
return callback.onCabFinished(materialCab);
}
});
@ -427,4 +416,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
super.onMediaStoreChanged();
reloadDataSets();
}
@Override
public void setStatusbarColor(int color) {
super.setStatusbarColor(color);
setLightStatusbar(false);
}
}

View file

@ -5,8 +5,6 @@ import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@ -20,7 +18,6 @@ import android.support.design.widget.AppBarLayout.OnOffsetChangedListener;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.widget.Toolbar;
@ -34,8 +31,11 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.afollestad.materialcab.MaterialCab;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.bumptech.glide.Glide;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.util.NavigationViewUtil;
import com.kabouzeid.appthemehelper.util.TabLayoutUtil;
import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PagerAdapter;
import com.kabouzeid.gramophone.dialogs.ChangelogDialog;
@ -60,7 +60,6 @@ import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import java.io.File;
@ -107,14 +106,14 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
findViewById(R.id.drawer_content_container).setFitsSystemWindows(false);
}
setStatusbarColorAuto();
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
setUpDrawerLayout();
setUpToolbar();
setUpViewPager();
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
checkChangelog();
if (!PreferenceUtil.getInstance(this).introShown()) {
@ -160,8 +159,8 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
pager.setOffscreenPageLimit(pagerAdapter.getCount() - 1); // => all
tabs.setupWithViewPager(pager);
tabs.setTabTextColors(ColorUtil.getSecondaryTextColorForBackground(this, getThemeColorPrimary()), ColorUtil.getPrimaryTextColorForBackground(this, getThemeColorPrimary()));
tabs.setSelectedTabIndicatorColor(getThemeColorAccent() == Color.WHITE && !ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()) ? Color.WHITE : ThemeSingleton.get().positiveColor.getDefaultColor());
TabLayoutUtil.setTabLayoutColors(tabs, ToolbarContentTintHelper.toolbarTitleColor(this, ThemeStore.primaryColor(this)), ThemeStore.accentColor(this));
int startPosition = PreferenceUtil.getInstance(this).getDefaultStartPage();
startPosition = startPosition == -1 ? PreferenceUtil.getInstance(this).getLastStartPage() : startPosition;
@ -169,43 +168,21 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
}
private void setUpToolbar() {
int primaryColor = ThemeStore.primaryColor(this);
appbar.setBackgroundColor(primaryColor);
toolbar.setBackgroundColor(primaryColor);
toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp);
setTitle(getResources().getString(R.string.app_name));
setAppBarColor();
setSupportActionBar(toolbar);
}
private void setAppBarColor() {
appbar.setBackgroundColor(getThemeColorPrimary());
}
private void setUpNavigationView() {
navigationView.setCheckedItem(R.id.nav_library);
final int colorAccent = ThemeSingleton.get().positiveColor.getDefaultColor();
navigationView.setItemTextColor(new ColorStateList(
new int[][]{
//{-android.R.attr.state_enabled}, // disabled
{android.R.attr.state_checked}, // checked
{} // default
},
new int[]{
// 0,
colorAccent,
ThemeSingleton.get().darkTheme ? ContextCompat.getColor(this, R.color.primary_text_default_material_dark) : ContextCompat.getColor(this, R.color.primary_text_default_material_light)
}
));
navigationView.setItemIconTintList(new ColorStateList(
new int[][]{
//{-android.R.attr.state_enabled}, // disabled
{android.R.attr.state_checked}, // checked
{} // default
},
new int[]{
// 0,
colorAccent,
ThemeSingleton.get().darkTheme ? ContextCompat.getColor(this, R.color.secondary_text_default_material_dark) : ContextCompat.getColor(this, R.color.secondary_text_default_material_light)
}
));
int accentColor = ThemeStore.accentColor(this);
NavigationViewUtil.setItemIconColors(navigationView, ThemeStore.textColorSecondary(this), accentColor);
NavigationViewUtil.setItemTextColors(navigationView, ThemeStore.textColorPrimary(this), accentColor);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
@ -334,16 +311,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
menu.removeItem(R.id.action_grid_size);
menu.removeItem(R.id.action_colored_footers);
}
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary());
ViewUtil.setToolbarContentDark(this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
ViewUtil.invalidateToolbarPopupMenuTint(toolbar);
return super.onPrepareOptionsMenu(menu);
return super.onCreateOptionsMenu(menu);
}
@Override
@ -357,8 +325,6 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
return true;
}
ViewUtil.invalidateToolbarPopupMenuTint(toolbar);
Fragment currentFragment = getCurrentFragment();
if (currentFragment instanceof AbsMainActivityRecyclerViewCustomGridSizeFragment) {
AbsMainActivityRecyclerViewCustomGridSizeFragment absMainActivityRecyclerViewCustomGridSizeFragment = (AbsMainActivityRecyclerViewCustomGridSizeFragment) currentFragment;
@ -571,7 +537,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
cab = new MaterialCab(this, R.id.cab_stub)
.setMenu(menu)
.setCloseDrawableRes(R.drawable.ic_close_white_24dp)
.setBackgroundColor(ColorUtil.shiftBackgroundColorForLightText(getThemeColorPrimary()))
.setBackgroundColor(ColorUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(this)))
.start(callback);
return cab;
}
@ -619,12 +585,12 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
@Override
public void onDrawerOpened(View drawerView) {
setUseDarkStatusBarIcons(false);
setLightStatusbar(false);
}
@Override
public void onDrawerClosed(View drawerView) {
setUseDarkStatusBarIcons(ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary()));
setLightStatusbarAuto(ThemeStore.primaryColor(this));
}
@Override

View file

@ -15,6 +15,7 @@ import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.song.PlaylistSongAdapter;
import com.kabouzeid.gramophone.adapter.song.SmartPlaylistSongAdapter;
@ -31,7 +32,6 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import com.kabouzeid.gramophone.util.ViewUtil;
import java.util.ArrayList;
import java.util.List;
@ -63,9 +63,13 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStatusBarTransparent();
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
setStatusbarColorAuto();
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
getIntentExtras();
setUpRecyclerView();
@ -73,10 +77,6 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
checkIsEmpty();
setUpToolBar();
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
}
@Override
@ -137,7 +137,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
}
private void setUpToolBar() {
toolbar.setBackgroundColor(getThemeColorPrimary());
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setTitle(playlist.name);
@ -159,10 +159,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_playlist_detail, menu);
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary());
ViewUtil.setToolbarContentDark(this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
return true;
return super.onCreateOptionsMenu(menu);
}
@Override
@ -191,7 +188,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
cab = new MaterialCab(this, R.id.cab_stub)
.setMenu(menu)
.setCloseDrawableRes(R.drawable.ic_close_white_24dp)
.setBackgroundColor(ColorUtil.shiftBackgroundColorForLightText(getThemeColorPrimary()))
.setBackgroundColor(ColorUtil.shiftBackgroundColorForLightText(ThemeStore.primaryColor(this)))
.start(callback);
return cab;
}

View file

@ -10,7 +10,6 @@ import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
@ -19,12 +18,12 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.SearchAdapter;
import com.kabouzeid.gramophone.ui.activities.base.AbsMusicServiceActivity;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import butterknife.Bind;
import butterknife.ButterKnife;
@ -51,9 +50,13 @@ public class SearchActivity extends AbsMusicServiceActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
setStatusBarTransparent();
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
setStatusbarColorAuto();
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
searchAdapter = new SearchAdapter(this);
recyclerView.setAdapter(searchAdapter);
@ -68,29 +71,17 @@ public class SearchActivity extends AbsMusicServiceActivity {
setUpToolBar();
setUpSearchBar();
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary());
ViewUtil.setToolbarContentDark(this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
return super.onCreateOptionsMenu(menu);
}
private void setUpToolBar() {
toolbar.setBackgroundColor(getThemeColorPrimary());
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setUpSearchBar() {
searchCloseBtn.setColorFilter(ViewUtil.getToolbarIconColor(this, ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary())), PorterDuff.Mode.SRC_IN);
searchCloseBtn.setColorFilter(ToolbarContentTintHelper.toolbarContentColor(this, ThemeStore.primaryColor(this)), PorterDuff.Mode.SRC_IN);
searchCloseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -98,8 +89,8 @@ public class SearchActivity extends AbsMusicServiceActivity {
}
});
searchSrcText.setTextColor(ColorUtil.getPrimaryTextColorForBackground(this, getThemeColorPrimary()));
searchSrcText.setHintTextColor(ColorUtil.getSecondaryTextColorForBackground(this, getThemeColorPrimary()));
searchSrcText.setTextColor(ToolbarContentTintHelper.toolbarTitleColor(this, ThemeStore.primaryColor(this)));
searchSrcText.setHintTextColor(ToolbarContentTintHelper.toolbarSubtitleColor(this, ThemeStore.primaryColor(this)));
searchSrcText.setHint(R.string.search_hint);
searchSrcText.addTextChangedListener(new TextWatcher() {

View file

@ -13,19 +13,19 @@ import android.preference.PreferenceManager;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StyleRes;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.afollestad.materialdialogs.color.ColorChooserDialog;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.common.prefs.ATEColorPreference;
import com.kabouzeid.appthemehelper.common.prefs.ATESwitchPreference;
import com.kabouzeid.appthemehelper.util.ColorUtil;
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;
import butterknife.Bind;
import butterknife.ButterKnife;
@ -40,33 +40,37 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preferences);
setStatusBarTransparent();
setDrawUnderStatusbar(true);
ButterKnife.bind(this);
toolbar.setBackgroundColor(getThemeColorPrimary());
setStatusbarColorAuto();
setNavigationbarColorAuto();
setTaskDescriptionColorAuto();
toolbar.setBackgroundColor(ThemeStore.primaryColor(this));
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (savedInstanceState == null)
getFragmentManager().beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit();
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
}
@Override
public void onColorSelection(@NonNull ColorChooserDialog dialog, @ColorInt int selectedColor) {
switch (dialog.getTitle()) {
case R.string.primary_color:
PreferenceUtil.getInstance(this).setThemeColorPrimary(selectedColor);
ThemeStore.editTheme(this)
.primaryColor(selectedColor)
.commit();
break;
case R.string.accent_color:
PreferenceUtil.getInstance(this).setThemeColorAccent(selectedColor);
ThemeStore.editTheme(this)
.accentColor(selectedColor)
.commit();
break;
}
recreateIfThemeChanged();
recreate();
}
@Override
@ -78,14 +82,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(getThemeColorPrimary());
ViewUtil.setToolbarContentDark(this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
return super.onCreateOptionsMenu(menu);
}
public static class SettingsFragment extends PreferenceFragment {
private static void setSummary(@NonNull Preference preference) {
@ -142,8 +138,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
@Override
public boolean onPreferenceChange(Preference preference, @NonNull Object o) {
setSummary(generalTheme, o);
PreferenceUtil.getInstance(getActivity()).setGeneralTheme(getActivity(), (String) o);
((SettingsActivity) getActivity()).recreateIfThemeChanged();
ThemeStore.editTheme(getActivity())
.activityTheme(getThemeResFromPrefValue((String) o))
.commit();
getActivity().recreate();
return true;
}
});
@ -158,46 +156,51 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}
});
ColorChooserPreference primaryColor = (ColorChooserPreference) findPreference("primary_color");
primaryColor.setColor(PreferenceUtil.getInstance(getActivity()).getThemeColorPrimary(getActivity()));
primaryColor.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference("primary_color");
final int primaryColor = ThemeStore.primaryColor(getActivity());
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor));
primaryColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(@NonNull Preference preference) {
new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.primary_color)
.accentMode(false)
.allowUserColorInput(true)
.allowUserColorInputAlpha(false)
.preselect(PreferenceUtil.getInstance(getActivity()).getThemeColorPrimary(getActivity()))
.preselect(primaryColor)
.show();
return true;
}
});
ColorChooserPreference accentColor = (ColorChooserPreference) findPreference("accent_color");
accentColor.setColor(PreferenceUtil.getInstance(getActivity()).getThemeColorAccent(getActivity()));
accentColor.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
ATEColorPreference accentColorPref = (ATEColorPreference) findPreference("accent_color");
final int accentColor = ThemeStore.accentColor(getActivity());
accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor));
accentColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(@NonNull Preference preference) {
new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.accent_color)
.accentMode(true)
.allowUserColorInput(true)
.allowUserColorInputAlpha(false)
.preselect(PreferenceUtil.getInstance(getActivity()).getThemeColorAccent(getActivity()))
.preselect(accentColor)
.show();
return true;
}
});
Preference colorNavBar = findPreference("should_color_navigation_bar");
ATESwitchPreference colorNavBar = (ATESwitchPreference) findPreference("should_color_navigation_bar");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
colorNavBar.setEnabled(false);
colorNavBar.setSummary(R.string.pref_only_lollipop);
} else {
colorNavBar.setChecked(ThemeStore.coloredNavigationBar(getActivity()));
colorNavBar.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
PreferenceUtil.getInstance(getActivity()).setColoredNavigationBar((boolean) newValue);
((SettingsActivity) getActivity()).recreateIfThemeChanged();
ThemeStore.editTheme(getActivity())
.coloredNavigationBar((Boolean) newValue)
.commit();
getActivity().recreate();
return true;
}
});
@ -223,5 +226,18 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
ResolveInfo ri = pm.resolveActivity(effects, 0);
return ri != null;
}
@StyleRes
public int getThemeResFromPrefValue(String themePrefValue) {
switch (themePrefValue) {
case "dark":
return R.style.Theme_Phonograph;
case "black":
return R.style.Theme_Phonograph_Black;
case "light":
default:
return R.style.Theme_Phonograph_Light;
}
}
}
}

View file

@ -7,7 +7,6 @@ import android.media.AudioManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -16,7 +15,7 @@ import android.support.v4.app.ActivityCompat;
import android.view.KeyEvent;
import android.view.View;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
@ -66,18 +65,9 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
}
protected void onPermissionsChanged() {
postRecreate();
}
protected void postRecreate() {
if (!recreating) {
recreating = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recreate();
}
}, 200);
postRecreate();
}
}
@ -165,7 +155,7 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
requestPermissions();
}
})
.setActionTextColor(ThemeSingleton.get().positiveColor)
.setActionTextColor(ThemeStore.accentColor(this))
.show();
} else {
// User has deny permission and checked never show permission dialog so you can redirect to Application settings page
@ -181,7 +171,7 @@ public abstract class AbsBaseActivity extends AbsThemeActivity implements KabVie
startActivity(intent);
}
})
.setActionTextColor(ThemeSingleton.get().positiveColor)
.setActionTextColor(ThemeStore.accentColor(this))
.show();
}
return;

View file

@ -33,9 +33,9 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Bind(R.id.sliding_layout)
SlidingUpPanelLayout slidingUpPanelLayout;
private int navigationBarColor;
private int navigationbarColor;
private int taskColor;
private boolean useDarkStatusBarIcons;
private boolean lightStatusbar;
private AbsPlayerFragment playerFragment;
private MiniPlayerFragment miniPlayerFragment;
@ -100,11 +100,11 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Override
public void onPanelCollapsed(View view) {
super.setUseDarkStatusBarIcons(useDarkStatusBarIcons);
super.notifyTaskColorChange(taskColor);
if (shouldColorNavigationBar()) {
super.setNavigationBarColor(navigationBarColor);
}
// restore values
super.setLightStatusbar(lightStatusbar);
super.setTaskDescriptionColor(taskColor);
super.setNavigationbarColor(navigationbarColor);
playerFragment.setMenuVisibility(false);
playerFragment.setUserVisibleHint(false);
playerFragment.onHide();
@ -112,12 +112,12 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
@Override
public void onPanelExpanded(View view) {
super.setUseDarkStatusBarIcons(false);
// setting fragments values
int playerFragmentColor = playerFragment.getPaletteColor();
super.notifyTaskColorChange(playerFragmentColor);
if (shouldColorNavigationBar()) {
super.setNavigationBarColor(playerFragmentColor);
}
super.setLightStatusbar(false);
super.setTaskDescriptionColor(playerFragmentColor);
super.setNavigationbarColor(playerFragmentColor);
playerFragment.setMenuVisibility(true);
playerFragment.setUserVisibleHint(true);
playerFragment.onShow();
@ -182,38 +182,36 @@ 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;
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.setNavigationBarColor(color);
}
}
@Override
protected void notifyTaskColorChange(@ColorInt int color) {
this.taskColor = color;
if (getPanelState() == null || getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.notifyTaskColorChange(color);
}
}
@Override
public void onPaletteColorChanged() {
if (getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
int playerFragmentColor = playerFragment.getPaletteColor();
super.notifyTaskColorChange(playerFragmentColor);
if (shouldColorNavigationBar()) {
super.setNavigationBarColor(playerFragmentColor);
}
super.setTaskDescriptionColor(playerFragmentColor);
super.setNavigationbarColor(playerFragmentColor);
}
}
@Override
public void setLightStatusbar(boolean enabled) {
lightStatusbar = enabled;
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.setLightStatusbar(enabled);
}
}
@Override
public void setNavigationbarColor(int color) {
this.navigationbarColor = color;
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.setNavigationbarColor(color);
}
}
@Override
public void setTaskDescriptionColor(@ColorInt int color) {
this.taskColor = color;
if (getPanelState() == null || getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.setTaskDescriptionColor(color);
}
}
}

View file

@ -1,192 +1,94 @@
package com.kabouzeid.gramophone.ui.activities.base;
import android.app.ActivityManager;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.ColorInt;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.kabouzeid.appthemehelper.ATH;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.common.ATHToolbarActivity;
import com.kabouzeid.appthemehelper.util.ColorUtil;
import com.kabouzeid.appthemehelper.util.MaterialDialogsUtil;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util;
/**
* @author Aidan Follestad (afollestad), Karim Abou Zeid (kabouzeid)
* @author Karim Abou Zeid (kabouzeid)
*/
public abstract class AbsThemeActivity extends AppCompatActivity implements KabViewsDisableAble {
private int colorPrimary;
private int colorPrimaryDarker;
private int colorAccent;
private int theme;
private boolean coloredNavigationBar;
@Nullable
private ActivityManager.TaskDescription taskDescription;
public abstract class AbsThemeActivity extends ATHToolbarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
theme = PreferenceUtil.getInstance(this).getGeneralTheme();
setTheme(theme);
// default theme
if (!ThemeStore.isConfigured(this, 1)) {
ThemeStore.editTheme(this)
.activityTheme(R.style.Theme_Phonograph_Light)
.primaryColorRes(R.color.indigo_500)
.accentColorRes(R.color.pink_A400)
.commit();
}
super.onCreate(savedInstanceState);
setupTheme();
MaterialDialogsUtil.updateMaterialDialogsThemeSingleton(this);
}
@Override
protected void onResume() {
super.onResume();
// the handler is necessary to avoid "java.lang.RuntimeException: Performing pause of activity that is not resumed"
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
recreateIfThemeChanged();
}
}, 200);
}
private void setupTheme() {
boolean dark = theme != R.style.Theme_Phonograph_Light;
colorPrimary = PreferenceUtil.getInstance(this).getThemeColorPrimary(this);
colorPrimaryDarker = ColorUtil.shiftColorDown(colorPrimary);
colorAccent = PreferenceUtil.getInstance(this).getThemeColorAccent(this);
coloredNavigationBar = PreferenceUtil.getInstance(this).shouldUseColoredNavigationBar();
final ColorStateList accentColorStateList;
if (colorAccent == Color.WHITE && !dark) {
accentColorStateList = ColorStateList.valueOf(Color.BLACK);
} else if (colorAccent == Color.BLACK && dark) {
accentColorStateList = ColorStateList.valueOf(Color.WHITE);
} else {
accentColorStateList = ColorStateList.valueOf(colorAccent);
}
ThemeSingleton.get().positiveColor = accentColorStateList;
ThemeSingleton.get().negativeColor = accentColorStateList;
ThemeSingleton.get().neutralColor = accentColorStateList;
ThemeSingleton.get().widgetColor = accentColorStateList.getDefaultColor();
ThemeSingleton.get().darkTheme = dark;
if (!overridesTaskColor()) {
notifyTaskColorChange(getThemeColorPrimary());
}
}
protected void recreateIfThemeChanged() {
if (didThemeChanged()) {
recreate();
}
}
private boolean didThemeChanged() {
return coloredNavigationBar != PreferenceUtil.getInstance(this).shouldUseColoredNavigationBar() ||
colorPrimary != PreferenceUtil.getInstance(this).getThemeColorPrimary(this) ||
colorAccent != PreferenceUtil.getInstance(this).getThemeColorAccent(this) ||
theme != PreferenceUtil.getInstance(this).getGeneralTheme();
}
protected void notifyTaskColorChange(@ColorInt int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Sets color of entry in the system recents page
if (taskDescription == null || taskDescription.getPrimaryColor() != color) {
taskDescription = new ActivityManager.TaskDescription(
null,
null,
ColorUtil.getOpaqueColor(color));
setTaskDescription(taskDescription);
}
}
}
public int getThemeColorPrimary() {
return colorPrimary;
}
public int getThemeColorPrimaryDarker() {
return colorPrimaryDarker;
}
public int getThemeColorAccent() {
return colorAccent;
}
public boolean shouldColorNavigationBar() {
return coloredNavigationBar;
}
protected void setStatusBarTransparent() {
// TODO see "materialize" library for setting window flags
protected void setDrawUnderStatusbar(boolean drawUnderStatusbar) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
Util.setAllowDrawUnderStatusBar(getWindow());
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
Util.setStatusBarTranslucent(getWindow());
}
protected void setNavigationBarColor(@ColorInt int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
getWindow().setNavigationBarColor(color);
}
/**
* This will set the color of the view with the id "status_bar" on KitKat and Lollipop.
* On Lollipop if no such view is found it will set the statusbar color using the native method.
*
* @param color the new statusbar color (will be shifted down on Lollipop and above)
*/
protected final void setStatusBarColor(@ColorInt int color) {
public void setStatusbarColor(int color) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);
if (statusBar != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
statusBar.setBackgroundColor(ColorUtil.shiftColorDown(color));
statusBar.setBackgroundColor(ColorUtil.darkenColor(color));
ATH.setLightStatusbarAuto(this, color);
} else {
statusBar.setBackgroundColor(color);
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
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);
ATH.setStatusbarColor(this, ColorUtil.darkenColor(color));
}
}
}
protected final void setNavigationBarThemeColor() {
setNavigationBarColor(colorPrimary);
public void setStatusbarColorAuto() {
// we don't want to use statusbar color because we are doing the color darkening on our own to support KitKat
setStatusbarColor(ThemeStore.primaryColor(this));
}
protected final void setStatusBarThemeColor() {
setStatusBarColor(colorPrimary);
public void setTaskDescriptionColor(@ColorInt int color) {
ATH.setTaskDescriptionColor(this, color);
}
protected final void resetNavigationBarColor() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
setNavigationBarColor(ColorUtil.resolveColor(this, android.R.attr.navigationBarColor));
public void setTaskDescriptionColorAuto() {
setTaskDescriptionColor(ThemeStore.primaryColor(this));
}
protected final void resetStatusBarColor() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
setStatusBarColor(ColorUtil.resolveColor(this, android.R.attr.statusBarColor));
public void setNavigationbarColor(int color) {
ATH.setNavigationbarColor(this, color);
}
protected boolean overridesTaskColor() {
return false;
public void setNavigationbarColorAuto() {
setNavigationbarColor(ThemeStore.navigationBarColor(this));
}
public void setLightStatusbar(boolean enabled) {
ATH.setLightStatusbar(this, enabled);
}
public void setLightStatusbarAuto(int bgColor) {
setLightStatusbar(ColorUtil.isColorLight(bgColor));
}
}

View file

@ -16,7 +16,6 @@ import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.OvershootInterpolator;
@ -25,13 +24,13 @@ import android.widget.LinearLayout;
import com.afollestad.materialdialogs.MaterialDialog;
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
@ -189,9 +188,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
}
});
int fabColor = getThemeColorAccent();
int fabDrawableColor = ColorUtil.getPrimaryTextColorForBackground(this, fabColor);
fab.setBackgroundTintList(ColorStateList.valueOf(fabColor));
int accentColor = ThemeStore.accentColor(this);
int fabDrawableColor = ColorUtil.getPrimaryTextColorForBackground(this, accentColor);
fab.setBackgroundTintList(ColorStateList.valueOf(accentColor));
fab.getDrawable().setColorFilter(fabDrawableColor, PorterDuff.Mode.SRC_IN);
}
@ -233,14 +232,6 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(paletteColorPrimary);
ViewUtil.setToolbarContentDark(this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
return super.onCreateOptionsMenu(menu);
}
protected void setNoImageMode() {
isInNoImageMode = true;
image.setVisibility(View.GONE);
@ -248,14 +239,13 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
observableScrollView.setPadding(0, Util.getActionBarSize(this), 0, 0);
observableScrollViewCallbacks.onScrollChanged(observableScrollView.getCurrentScrollY(), false, false);
paletteColorPrimary = getIntent().getIntExtra(EXTRA_PALETTE,
getThemeColorPrimary());
paletteColorPrimary = getIntent().getIntExtra(EXTRA_PALETTE, ThemeStore.primaryColor(this));
toolbar.setBackgroundColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary);
if (shouldColorNavigationBar())
setNavigationBarColor(paletteColorPrimary);
setStatusBarColor(paletteColorPrimary);
setStatusbarColor(paletteColorPrimary);
setNavigationbarColor(paletteColorPrimary);
setTaskDescriptionColor(paletteColorPrimary);
}
protected void dataChanged() {
@ -284,19 +274,10 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
private void setColors(int color) {
paletteColorPrimary = color;
observableScrollViewCallbacks.onScrollChanged(observableScrollView.getCurrentScrollY(), false, false);
if (shouldColorNavigationBar())
setNavigationBarColor(paletteColorPrimary);
setStatusBarColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary);
boolean darkContent = ColorUtil.useDarkTextColorOnBackground(paletteColorPrimary);
ViewUtil.setToolbarContentDark(AbsTagEditorActivity.this, toolbar, darkContent);
setUseDarkStatusBarIcons(darkContent);
notifyTaskColorChange(paletteColorPrimary);
}
@Override
protected boolean overridesTaskColor() {
return true;
setStatusbarColor(paletteColorPrimary);
setNavigationbarColor(paletteColorPrimary);
setTaskDescriptionColor(paletteColorPrimary);
}
protected void writeValuesToFiles(@NonNull final Map<FieldKey, String> fieldKeyValueMap) {

View file

@ -13,7 +13,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.MusicServiceEventListener;
import com.kabouzeid.gramophone.util.ColorUtil;
@ -61,7 +61,7 @@ public abstract class AbsMainActivityRecyclerViewFragment<A extends RecyclerView
private void setUpRecyclerView() {
if (recyclerView instanceof FastScrollRecyclerView) {
int accentColor = ThemeSingleton.get().positiveColor.getDefaultColor();
int accentColor = ThemeStore.accentColor(getActivity());
((FastScrollRecyclerView) recyclerView).setPopupBgColor(accentColor);
((FastScrollRecyclerView) recyclerView).setPopupTextColor(ColorUtil.getPrimaryTextColorForBackground(getActivity(), accentColor));
((FastScrollRecyclerView) recyclerView).setThumbColor(accentColor);

View file

@ -1,6 +1,7 @@
package com.kabouzeid.gramophone.ui.fragments.player;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.support.annotation.Nullable;
@ -13,7 +14,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.MusicProgressViewUpdateHelper;
@ -99,7 +100,7 @@ public class MiniPlayerFragment extends Fragment implements MusicServiceEventLis
ColorUtil.resolveColor(activity, android.R.attr.textColorSecondary)));
setUpPlayPauseButton();
progressBar.setProgressTintList(ThemeSingleton.get().positiveColor);
progressBar.setProgressTintList(ColorStateList.valueOf(ThemeStore.accentColor(activity)));
}
public void setMiniPlayerColor(int color) {

View file

@ -2,10 +2,12 @@ package com.kabouzeid.gramophone.ui.fragments.player;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
@ -19,11 +21,13 @@ import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.TextView;
import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
import com.kabouzeid.appthemehelper.util.ATHUtil;
import com.kabouzeid.appthemehelper.util.TintHelper;
import com.kabouzeid.appthemehelper.util.ToolbarContentTintHelper;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.adapter.song.PlayingQueueAdapter;
@ -225,7 +229,9 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
private void updateIsFavorite() {
boolean isFavorite = MusicUtil.isFavorite(getActivity(), MusicPlayerRemote.getCurrentSong());
Drawable favoriteIcon = Util.getTintedDrawable(getActivity(), isFavorite ? R.drawable.ic_favorite_white_24dp : R.drawable.ic_favorite_outline_white_24dp, ViewUtil.getToolbarIconColor(getActivity(), false));
int res = isFavorite ? R.drawable.ic_favorite_white_24dp : R.drawable.ic_favorite_outline_white_24dp;
Drawable favoriteIcon = TintHelper.tintDrawable(ContextCompat.getDrawable(getActivity(), res), ToolbarContentTintHelper.toolbarContentColor(getActivity(), Color.TRANSPARENT));
toolbar.getMenu().findItem(R.id.action_toggle_favorite)
.setIcon(favoriteIcon)
.setTitle(isFavorite ? getString(R.string.action_remove_from_favorites) : getString(R.string.action_add_to_favorites));
@ -347,7 +353,7 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
animatorSet.play(backgroundAnimator);
Animator subHeaderAnimator = ThemeSingleton.get().darkTheme ? null : ViewUtil.createTextColorTransition(fragment.playerQueueSubHeader, fragment.lastColor, newColor);
Animator subHeaderAnimator = ATHUtil.isWindowBackgroundDark(fragment.getActivity()) ? null : ViewUtil.createTextColorTransition(fragment.playerQueueSubHeader, fragment.lastColor, newColor);
if (subHeaderAnimator != null) {
animatorSet.play(subHeaderAnimator);
}
@ -358,7 +364,7 @@ public class PlayerFragment extends AbsPlayerFragment implements PlayerAlbumCove
@Override
public void animateColorChange(PlayerFragment fragment, int newColor) {
if (ThemeSingleton.get().darkTheme) {
if (ATHUtil.isWindowBackgroundDark(fragment.getActivity())) {
fragment.playerQueueSubHeader.setTextColor(ColorUtil.getSecondaryTextColor(fragment.getActivity(), false));
}
}