Makes full use of the Android Support Design Library. A lot of small things fixed or improved. Added dozens of new colors.
This commit is contained in:
parent
b233b3b718
commit
31926d7983
45 changed files with 447 additions and 599 deletions
|
|
@ -203,8 +203,8 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
public void onGenerated(Palette palette) {
|
||||
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
||||
if (vibrantSwatch != null) {
|
||||
title.setTextColor(Util.getColorWithoutAlpha(vibrantSwatch.getTitleTextColor()));
|
||||
artist.setTextColor(Util.getColorWithoutAlpha(vibrantSwatch.getTitleTextColor()));
|
||||
title.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
|
||||
artist.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
|
||||
ViewUtil.animateViewColor(footer, footer.getDrawingCacheBackgroundColor(), vibrantSwatch.getRgb());
|
||||
} else {
|
||||
paletteBlackAndWhite(title, artist, footer);
|
||||
|
|
@ -217,8 +217,8 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
}
|
||||
|
||||
private void paletteBlackAndWhite(final TextView title, final TextView artist, final View footer) {
|
||||
title.setTextColor(Util.getColorWithoutAlpha(DialogUtils.resolveColor(activity, R.attr.title_text_color)));
|
||||
artist.setTextColor(Util.getColorWithoutAlpha(DialogUtils.resolveColor(activity, R.attr.caption_text_color)));
|
||||
title.setTextColor(Util.getOpaqueColor(DialogUtils.resolveColor(activity, R.attr.title_text_color)));
|
||||
artist.setTextColor(Util.getOpaqueColor(DialogUtils.resolveColor(activity, R.attr.caption_text_color)));
|
||||
int defaultBarColor = DialogUtils.resolveColor(activity, R.attr.default_bar_color);
|
||||
ViewUtil.animateViewColor(footer, defaultBarColor, defaultBarColor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,119 +0,0 @@
|
|||
package com.kabouzeid.gramophone.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Build;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.afollestad.materialdialogs.util.DialogUtils;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
|
||||
import com.kabouzeid.gramophone.model.NavigationDrawerItem;
|
||||
import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Aidan Follestad (afollestad)
|
||||
*/
|
||||
public class NavigationDrawerItemAdapter extends RecyclerView.Adapter<NavigationDrawerItemAdapter.ShortcutViewHolder> implements View.OnClickListener {
|
||||
|
||||
// per the Material design guidelines
|
||||
@SuppressWarnings("FieldCanBeLocal")
|
||||
private final int ALPHA_ACTIVATED = 255;
|
||||
@SuppressWarnings("FieldCanBeLocal")
|
||||
private final int ALPHA_ICON = 138;
|
||||
@SuppressWarnings("FieldCanBeLocal")
|
||||
private final int ALPHA_TEXT = 222;
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int index = (Integer) v.getTag();
|
||||
if (mCallback != null)
|
||||
mCallback.onItemSelected(index);
|
||||
}
|
||||
|
||||
public static class ShortcutViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
public ShortcutViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
divider = itemView.findViewById(R.id.divider);
|
||||
container = itemView.findViewById(R.id.container);
|
||||
title = (TextView) itemView.findViewById(R.id.title);
|
||||
icon = (ImageView) itemView.findViewById(R.id.icon);
|
||||
}
|
||||
|
||||
final TextView title;
|
||||
final ImageView icon;
|
||||
final View divider;
|
||||
final View container;
|
||||
}
|
||||
|
||||
private int currentChecked = -1;
|
||||
private int navIconColor;
|
||||
private final ArrayList<NavigationDrawerItem> mItems;
|
||||
private final Callback mCallback;
|
||||
|
||||
public interface Callback {
|
||||
void onItemSelected(int index);
|
||||
}
|
||||
|
||||
public NavigationDrawerItemAdapter(Context context, ArrayList<NavigationDrawerItem> objects, Callback callback) {
|
||||
navIconColor = DialogUtils.resolveColor(context, R.attr.nav_drawer_icon_color);
|
||||
if (DialogUtils.isColorDark(navIconColor))
|
||||
navIconColor = ColorChooserDialog.shiftColorUp(navIconColor);
|
||||
mItems = objects;
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
public void setChecked(int position) {
|
||||
// int oldPosition = currentChecked;
|
||||
currentChecked = position;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShortcutViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_navigation_drawer, parent, false);
|
||||
return new ShortcutViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ShortcutViewHolder holder, int position) {
|
||||
NavigationDrawerItem item = mItems.get(position);
|
||||
|
||||
holder.title.setText(item.title);
|
||||
holder.icon.setImageResource(item.imageRes);
|
||||
holder.divider.setVisibility(position == NavigationDrawerFragment.SETTINGS_INDEX ?
|
||||
View.VISIBLE : View.GONE);
|
||||
|
||||
final boolean selected = position == currentChecked;
|
||||
final int iconColor = selected ? ThemeSingleton.get().positiveColor : navIconColor;
|
||||
final int textColor = selected ? ThemeSingleton.get().positiveColor : navIconColor;
|
||||
|
||||
holder.title.setTextColor(textColor);
|
||||
holder.title.setAlpha(selected ? ALPHA_ACTIVATED : ALPHA_TEXT);
|
||||
holder.icon.setColorFilter(iconColor, PorterDuff.Mode.SRC_ATOP);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
|
||||
holder.icon.setImageAlpha(selected ? ALPHA_ACTIVATED : ALPHA_ICON);
|
||||
} else {
|
||||
// noinspection deprecation
|
||||
holder.icon.setAlpha(selected ? ALPHA_ACTIVATED : ALPHA_ICON);
|
||||
}
|
||||
|
||||
holder.container.setActivated(selected);
|
||||
holder.container.setTag(position);
|
||||
holder.container.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mItems.size();
|
||||
}
|
||||
}
|
||||
|
|
@ -21,9 +21,8 @@ import android.widget.BaseAdapter;
|
|||
import android.widget.GridView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.views.CircleView;
|
||||
import com.kabouzeid.gramophone.views.ColorView;
|
||||
|
||||
/**
|
||||
* @author Aidan Follestad (afollestad)
|
||||
|
|
@ -95,7 +94,10 @@ public class ColorChooserDialog extends DialogFragment implements View.OnClickLi
|
|||
mColors[i] = ta.getColor(i, 0);
|
||||
ta.recycle();
|
||||
mGrid = (GridView) dialog.getCustomView();
|
||||
invalidateGrid();
|
||||
if (mGrid != null) {
|
||||
mGrid.setNumColumns(primary ? 7 : 4);
|
||||
invalidateGrid();
|
||||
}
|
||||
return dialog;
|
||||
}
|
||||
|
||||
|
|
@ -130,13 +132,12 @@ public class ColorChooserDialog extends DialogFragment implements View.OnClickLi
|
|||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
if (convertView == null)
|
||||
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.griditem_color_chooser, parent, false);
|
||||
final boolean dark = ThemeSingleton.get().darkTheme;
|
||||
CircleView child = (CircleView) convertView;
|
||||
child.setActivated(getArguments().getInt("preselect") == mColors[position]);
|
||||
child.setBackgroundColor(mColors[position]);
|
||||
child.setBorderColor(dark ? Color.WHITE : Color.BLACK);
|
||||
child.setTag(position);
|
||||
child.setOnClickListener(this);
|
||||
|
||||
final ColorView colorView = (ColorView) convertView;
|
||||
colorView.setActivated(getArguments().getInt("preselect") == mColors[position]);
|
||||
colorView.setBackgroundColor(mColors[position]);
|
||||
colorView.setTag(position);
|
||||
colorView.setOnClickListener(this);
|
||||
|
||||
Drawable selector = createSelector(mColors[position]);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
|
|
@ -147,9 +148,9 @@ public class ColorChooserDialog extends DialogFragment implements View.OnClickLi
|
|||
shiftColorDown(mColors[position])
|
||||
};
|
||||
ColorStateList rippleColors = new ColorStateList(states, colors);
|
||||
child.setForeground(new RippleDrawable(rippleColors, selector, null));
|
||||
colorView.setForeground(new RippleDrawable(rippleColors, selector, null));
|
||||
} else {
|
||||
child.setForeground(selector);
|
||||
colorView.setForeground(selector);
|
||||
}
|
||||
return convertView;
|
||||
}
|
||||
|
|
@ -162,20 +163,14 @@ public class ColorChooserDialog extends DialogFragment implements View.OnClickLi
|
|||
}
|
||||
}
|
||||
|
||||
public static int shiftColorDown(int color) {
|
||||
@SuppressWarnings("ResourceType")
|
||||
private static int shiftColorDown(int color) {
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
hsv[2] *= 0.9f; // value component
|
||||
return Color.HSVToColor(hsv);
|
||||
}
|
||||
|
||||
public static int shiftColorUp(int color) {
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
hsv[2] *= 1.1f; // value component
|
||||
return Color.HSVToColor(hsv);
|
||||
}
|
||||
|
||||
private static int translucentColor(int color) {
|
||||
final float factor = 0.7f;
|
||||
int alpha = Math.round(Color.alpha(color) * factor);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ public class UIPreferenceChangedEvent {
|
|||
public static final int COLORED_NAVIGATION_BAR_CURRENT_PLAYING_CHANGED = 6;
|
||||
public static final int COLORED_NAVIGATION_BAR_CHANGED = 10;
|
||||
public static final int COLORED_NAVIGATION_BAR_OTHER_SCREENS_CHANGED = 7;
|
||||
public static final int TOOLBAR_TRANSPARENT_CHANGED = 8;
|
||||
|
||||
private final int action;
|
||||
private final Object value;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import android.util.AttributeSet;
|
|||
import android.view.View;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.views.CircleView;
|
||||
import com.kabouzeid.gramophone.views.ColorView;
|
||||
|
||||
public class ColorChooserPreference extends Preference {
|
||||
|
||||
|
|
@ -43,11 +43,10 @@ public class ColorChooserPreference extends Preference {
|
|||
|
||||
private void invalidateColor() {
|
||||
if (mView != null) {
|
||||
CircleView circle = (CircleView) mView.findViewById(R.id.circle);
|
||||
ColorView circle = (ColorView) mView.findViewById(R.id.circle);
|
||||
if (this.color != 0) {
|
||||
circle.setVisibility(View.VISIBLE);
|
||||
circle.setBackgroundColor(color);
|
||||
circle.setBorderColor(border);
|
||||
} else {
|
||||
circle.setVisibility(View.GONE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
private ObservableRecyclerView recyclerView;
|
||||
private AlbumSongAdapter adapter;
|
||||
private ArrayList<Song> songs;
|
||||
private View statusBar;
|
||||
private ImageView albumArtImageView;
|
||||
private ImageView albumArtBackground;
|
||||
private View songsBackgroundView;
|
||||
|
|
@ -99,7 +98,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
// Change alpha of overlay
|
||||
toolbarAlpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
|
||||
ViewUtil.setBackgroundAlpha(toolbar, toolbarAlpha, toolbarColor);
|
||||
ViewUtil.setBackgroundAlpha(statusBar, cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor);
|
||||
setStatusBarColor(Util.getColorWithAlpha(cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor));
|
||||
|
||||
// Translate name text
|
||||
int maxTitleTranslationY = albumArtViewHeight;
|
||||
|
|
@ -112,6 +111,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setStatusBarTransparent();
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_album_detail);
|
||||
|
||||
|
|
@ -174,7 +174,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
recyclerView = (ObservableRecyclerView) findViewById(R.id.list);
|
||||
albumTitleView = (TextView) findViewById(R.id.album_title);
|
||||
songsBackgroundView = findViewById(R.id.list_background);
|
||||
statusBar = findViewById(R.id.status_bar);
|
||||
// statusBar = findViewById(R.id.status_bar);
|
||||
}
|
||||
|
||||
private void setUpObservableListViewParams() {
|
||||
|
|
@ -237,7 +237,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
if (vibrantSwatch != null) {
|
||||
toolbarColor = vibrantSwatch.getRgb();
|
||||
albumTitleView.setBackgroundColor(toolbarColor);
|
||||
albumTitleView.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
albumTitleView.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
|
||||
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(AlbumDetailActivity.this).coloredNavigationBarAlbumEnabled())
|
||||
setNavigationBarColor(toolbarColor);
|
||||
notifyTaskColorChange(toolbarColor);
|
||||
|
|
@ -411,7 +411,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
.start(new MaterialCab.Callback() {
|
||||
@Override
|
||||
public boolean onCabCreated(MaterialCab materialCab, Menu menu) {
|
||||
ViewUtil.setBackgroundAlpha(statusBar, 1, toolbarColor);
|
||||
setStatusBarColor(Util.getOpaqueColor(toolbarColor));
|
||||
return callback.onCabCreated(materialCab, menu);
|
||||
}
|
||||
|
||||
|
|
@ -422,7 +422,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
|||
|
||||
@Override
|
||||
public boolean onCabFinished(MaterialCab materialCab) {
|
||||
ViewUtil.setBackgroundAlpha(statusBar, toolbarAlpha, toolbarColor);
|
||||
setStatusBarColor(Util.getColorWithAlpha(toolbarAlpha, toolbarColor));
|
||||
return callback.onCabFinished(materialCab);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
private Artist artist;
|
||||
|
||||
private ObservableListView songListView;
|
||||
private View statusBar;
|
||||
private ImageView artistImage;
|
||||
private ImageView artistImageBackground;
|
||||
private View songsBackgroundView;
|
||||
|
|
@ -112,7 +111,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
// Change alpha of overlay
|
||||
toolbarAlpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
|
||||
ViewUtil.setBackgroundAlpha(toolbar, toolbarAlpha, toolbarColor);
|
||||
ViewUtil.setBackgroundAlpha(statusBar, cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor);
|
||||
setStatusBarColor(Util.getColorWithAlpha(cab != null && cab.isActive() ? 1 : toolbarAlpha, toolbarColor));
|
||||
|
||||
// Translate name text
|
||||
int maxTitleTranslationY = artistImageViewHeight;
|
||||
|
|
@ -127,6 +126,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setStatusBarTransparent();
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_artist_detail);
|
||||
|
||||
|
|
@ -183,7 +183,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
songListView = (ObservableListView) findViewById(R.id.list);
|
||||
artistNameTv = (TextView) findViewById(R.id.artist_name);
|
||||
songsBackgroundView = findViewById(R.id.list_background);
|
||||
statusBar = findViewById(R.id.status_bar);
|
||||
|
||||
songListHeader = LayoutInflater.from(this).inflate(R.layout.artist_detail_header, songListView, false);
|
||||
albumRecyclerView = (RecyclerView) songListHeader.findViewById(R.id.recycler_view);
|
||||
|
|
@ -318,7 +317,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
if (vibrantSwatch != null) {
|
||||
toolbarColor = vibrantSwatch.getRgb();
|
||||
artistNameTv.setBackgroundColor(vibrantSwatch.getRgb());
|
||||
artistNameTv.setTextColor(vibrantSwatch.getTitleTextColor());
|
||||
artistNameTv.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
|
||||
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(ArtistDetailActivity.this).coloredNavigationBarArtistEnabled())
|
||||
setNavigationBarColor(vibrantSwatch.getRgb());
|
||||
notifyTaskColorChange(toolbarColor);
|
||||
|
|
@ -497,7 +496,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
.start(new MaterialCab.Callback() {
|
||||
@Override
|
||||
public boolean onCabCreated(MaterialCab materialCab, Menu menu) {
|
||||
ViewUtil.setBackgroundAlpha(statusBar, 1, toolbarColor);
|
||||
setStatusBarColor(Util.getOpaqueColor(toolbarColor));
|
||||
return callback.onCabCreated(materialCab, menu);
|
||||
}
|
||||
|
||||
|
|
@ -508,7 +507,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
|||
|
||||
@Override
|
||||
public boolean onCabFinished(MaterialCab materialCab) {
|
||||
ViewUtil.setBackgroundAlpha(statusBar, toolbarAlpha, toolbarColor);
|
||||
setStatusBarColor(Util.getColorWithAlpha(toolbarAlpha, toolbarColor));
|
||||
return callback.onCabFinished(materialCab);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import android.os.Handler;
|
|||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
|
|
@ -30,7 +31,6 @@ import android.widget.TextView;
|
|||
|
||||
import com.afollestad.materialcab.MaterialCab;
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.astuetz.PagerSlidingTabStrip;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.PagerAdapter;
|
||||
import com.kabouzeid.gramophone.dialogs.AboutDialog;
|
||||
|
|
@ -70,7 +70,7 @@ public class MainActivity extends AbsFabActivity
|
|||
private Toolbar toolbar;
|
||||
private PagerAdapter pagerAdapter;
|
||||
private ViewPager viewPager;
|
||||
private PagerSlidingTabStrip slidingTabLayout;
|
||||
private TabLayout tabLayout;
|
||||
private int currentPage = -1;
|
||||
private MaterialCab cab;
|
||||
private NavigationView navigationView;
|
||||
|
|
@ -105,34 +105,34 @@ public class MainActivity extends AbsFabActivity
|
|||
int startPosition = PreferenceUtils.getInstance(this).getDefaultStartPage();
|
||||
startPosition = startPosition == -1 ? PreferenceUtils.getInstance(this).getLastStartPage() : startPosition;
|
||||
currentPage = startPosition;
|
||||
viewPager.setCurrentItem(startPosition);
|
||||
|
||||
navigationView.getMenu().getItem(startPosition).setChecked(true);
|
||||
|
||||
slidingTabLayout.setIndicatorColor(ThemeSingleton.get().positiveColor);
|
||||
slidingTabLayout.setViewPager(viewPager);
|
||||
|
||||
slidingTabLayout.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(final int position) {
|
||||
public void onPageSelected(int position) {
|
||||
navigationView.getMenu().getItem(position).setChecked(true);
|
||||
currentPage = position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
viewPager.setCurrentItem(startPosition);
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
viewPager = (ViewPager) findViewById(R.id.pager);
|
||||
slidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.tabs);
|
||||
tabLayout = (TabLayout) findViewById(R.id.tabs);
|
||||
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
navigationView = (NavigationView) findViewById(R.id.nav_view);
|
||||
}
|
||||
|
|
@ -140,16 +140,15 @@ public class MainActivity extends AbsFabActivity
|
|||
private void setUpToolBar() {
|
||||
setTitle(getResources().getString(R.string.app_name));
|
||||
toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
setToolBarTransparent(PreferenceUtils.getInstance(this).transparentToolbar());
|
||||
setToolBarColor();
|
||||
setSupportActionBar(toolbar);
|
||||
setUpDrawerToggle();
|
||||
}
|
||||
|
||||
private void setToolBarTransparent(boolean transparent) {
|
||||
float alpha = transparent ? 0.9f : 1f;
|
||||
final int colorPrimary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
||||
ViewUtil.setBackgroundAlpha(toolbar, alpha, colorPrimary);
|
||||
ViewUtil.setBackgroundAlpha(slidingTabLayout, alpha, colorPrimary);
|
||||
private void setToolBarColor() {
|
||||
final int colorPrimary = getThemeColorPrimary();
|
||||
toolbar.setBackgroundColor(colorPrimary);
|
||||
tabLayout.setBackgroundColor(colorPrimary);
|
||||
}
|
||||
|
||||
private void setUpNavigationView() {
|
||||
|
|
@ -163,7 +162,7 @@ public class MainActivity extends AbsFabActivity
|
|||
new int[]{
|
||||
// 0,
|
||||
colorAccent,
|
||||
Color.argb(222, 0, 0, 0)
|
||||
ThemeSingleton.get().darkTheme ? Color.argb(222, 255, 255, 255) : Color.argb(222, 0, 0, 0)
|
||||
}
|
||||
));
|
||||
navigationView.setItemIconTintList(new ColorStateList(
|
||||
|
|
@ -175,7 +174,7 @@ public class MainActivity extends AbsFabActivity
|
|||
new int[]{
|
||||
// 0,
|
||||
colorAccent,
|
||||
Color.argb(138, 0, 0, 0)
|
||||
ThemeSingleton.get().darkTheme ? Color.argb(138, 255, 255, 255) : Color.argb(138, 0, 0, 0)
|
||||
}
|
||||
));
|
||||
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
|
||||
|
|
@ -369,9 +368,6 @@ public class MainActivity extends AbsFabActivity
|
|||
public void onUIPreferenceChangedEvent(UIPreferenceChangedEvent event) {
|
||||
super.onUIPreferenceChangedEvent(event);
|
||||
switch (event.getAction()) {
|
||||
case UIPreferenceChangedEvent.TOOLBAR_TRANSPARENT_CHANGED:
|
||||
setToolBarTransparent((boolean) event.getValue());
|
||||
break;
|
||||
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_OTHER_SCREENS_CHANGED:
|
||||
if ((boolean) event.getValue()) setNavigationBarThemeColor();
|
||||
else resetNavigationBarColor();
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setStatusBarTransparent();
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_music_controller);
|
||||
|
|
@ -218,7 +219,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
switch (MusicPlayerRemote.getShuffleMode()) {
|
||||
case MusicService.SHUFFLE_MODE_SHUFFLE:
|
||||
shuffleButton.setImageDrawable(Util.getTintedDrawable(this, R.drawable.ic_shuffle_white_48dp,
|
||||
ThemeSingleton.get().positiveColor));
|
||||
getThemeColorAccent() == Color.WHITE ? Color.BLACK : getThemeColorAccent()));
|
||||
break;
|
||||
default:
|
||||
shuffleButton.setImageDrawable(Util.getTintedDrawable(this, R.drawable.ic_shuffle_white_48dp,
|
||||
|
|
@ -245,11 +246,11 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
break;
|
||||
case MusicService.REPEAT_MODE_ALL:
|
||||
repeatButton.setImageDrawable(Util.getTintedDrawable(this, R.drawable.ic_repeat_white_48dp,
|
||||
ThemeSingleton.get().positiveColor));
|
||||
getThemeColorAccent() == Color.WHITE ? Color.BLACK : getThemeColorAccent()));
|
||||
break;
|
||||
default:
|
||||
repeatButton.setImageDrawable(Util.getTintedDrawable(this, R.drawable.ic_repeat_one_white_48dp,
|
||||
ThemeSingleton.get().positiveColor));
|
||||
getThemeColorAccent() == Color.WHITE ? Color.BLACK : getThemeColorAccent()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -320,7 +321,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
if (vibrantSwatch != null) {
|
||||
final int swatchRgb = vibrantSwatch.getRgb();
|
||||
animateColorChange(swatchRgb);
|
||||
animateTextColorChange(Util.getColorWithoutAlpha(vibrantSwatch.getTitleTextColor()));
|
||||
animateTextColorChange(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
|
||||
notifyTaskColorChange(swatchRgb);
|
||||
} else {
|
||||
resetColors();
|
||||
|
|
@ -333,7 +334,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
}
|
||||
|
||||
private void resetColors() {
|
||||
final int textColor = Util.getColorWithoutAlpha(DialogUtils.resolveColor(this, R.attr.title_text_color));
|
||||
final int textColor = Util.getOpaqueColor(DialogUtils.resolveColor(this, R.attr.title_text_color));
|
||||
final int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
||||
|
||||
animateColorChange(defaultBarColor);
|
||||
|
|
@ -360,7 +361,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
|||
else toolbar.setBackgroundColor(Color.TRANSPARENT);
|
||||
}
|
||||
|
||||
setTint(progressSlider, PreferenceUtils.getInstance(this).getThemeColorAccent());
|
||||
setTint(progressSlider, !ThemeSingleton.get().darkTheme && getThemeColorAccent() == Color.WHITE ? Color.BLACK : getThemeColorAccent());
|
||||
if (opaqueToolBar) setStatusBarColor(newColor);
|
||||
else setStatusBarColor(Color.TRANSPARENT);
|
||||
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
|
|||
|
||||
if (PreferenceUtils.getInstance(this).coloredNavigationBarPlaylistEnabled())
|
||||
setNavigationBarThemeColor();
|
||||
setStatusBarThemeColor();
|
||||
|
||||
App.bus.register(this);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,14 +113,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
}
|
||||
});
|
||||
|
||||
findPreference("transparent_toolbar").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object o) {
|
||||
App.bus.post(new UIPreferenceChangedEvent(UIPreferenceChangedEvent.TOOLBAR_TRANSPARENT_CHANGED, o));
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
findPreference("colored_album_footers").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object o) {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import com.kabouzeid.gramophone.misc.SmallOnGestureListener;
|
|||
import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
import com.kabouzeid.gramophone.views.PlayPauseDrawable;
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
|
|
@ -54,7 +55,7 @@ public abstract class AbsFabActivity extends AbsBaseActivity {
|
|||
|
||||
getFab().setImageDrawable(playPauseDrawable);
|
||||
final int accentColor = ThemeSingleton.get().positiveColor;
|
||||
getFab().setRippleColor(accentColor);
|
||||
getFab().setBackgroundTintList(Util.getEmptyColorStateList(accentColor));
|
||||
if (accentColor == Color.WHITE) {
|
||||
getFab().getDrawable().setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.graphics.BitmapFactory;
|
|||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.View;
|
||||
|
||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
|
|
@ -17,6 +18,9 @@ import com.kabouzeid.gramophone.util.Util;
|
|||
*/
|
||||
|
||||
public abstract class ThemeBaseActivity extends AppCompatActivity implements KabViewsDisableAble {
|
||||
private int colorPrimary;
|
||||
private int colorPrimaryDarker;
|
||||
private int colorAccent;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
|
@ -27,7 +31,11 @@ public abstract class ThemeBaseActivity extends AppCompatActivity implements Kab
|
|||
|
||||
|
||||
private void setupTheme() {
|
||||
ThemeSingleton.get().positiveColor = PreferenceUtils.getInstance(this).getThemeColorAccent();
|
||||
colorPrimary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
||||
colorPrimaryDarker = Util.shiftColorDown(colorPrimary);
|
||||
colorAccent = PreferenceUtils.getInstance(this).getThemeColorAccent();
|
||||
|
||||
ThemeSingleton.get().positiveColor = colorAccent;
|
||||
ThemeSingleton.get().negativeColor = ThemeSingleton.get().positiveColor;
|
||||
ThemeSingleton.get().neutralColor = ThemeSingleton.get().positiveColor;
|
||||
ThemeSingleton.get().widgetColor = ThemeSingleton.get().positiveColor;
|
||||
|
|
@ -49,27 +57,45 @@ public abstract class ThemeBaseActivity extends AppCompatActivity implements Kab
|
|||
}
|
||||
}
|
||||
|
||||
protected void setStatusBarTranslucent(boolean statusBarTranslucent) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
|
||||
Util.setStatusBarTranslucent(getWindow(), statusBarTranslucent);
|
||||
public int getThemeColorPrimary() {
|
||||
return colorPrimary;
|
||||
}
|
||||
|
||||
public int getThemeColorPrimaryDarker() {
|
||||
return colorPrimaryDarker;
|
||||
}
|
||||
|
||||
public int getThemeColorAccent() {
|
||||
return colorAccent;
|
||||
}
|
||||
|
||||
protected void setStatusBarTransparent() {
|
||||
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(), true);
|
||||
}
|
||||
|
||||
protected final void setNavigationBarColor(int color) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||
getWindow().setNavigationBarColor(color);
|
||||
getWindow().setNavigationBarColor(Util.shiftColorDown(color));
|
||||
}
|
||||
|
||||
protected final void setStatusBarColor(int color) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||
getWindow().setStatusBarColor(color);
|
||||
getWindow().setStatusBarColor(Util.shiftColorDown(color));
|
||||
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
final View statusBar = getWindow().getDecorView().getRootView().findViewById(R.id.status_bar);
|
||||
if (statusBar != null) statusBar.setBackgroundColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
protected final void setNavigationBarThemeColor() {
|
||||
setNavigationBarColor(PreferenceUtils.getInstance(this).getThemeColorPrimaryDarker());
|
||||
setNavigationBarColor(colorPrimary);
|
||||
}
|
||||
|
||||
protected final void setStatusBarThemeColor() {
|
||||
setStatusBarColor(PreferenceUtils.getInstance(this).getThemeColorPrimaryDarker());
|
||||
setStatusBarColor(colorPrimary);
|
||||
}
|
||||
|
||||
protected final void resetNavigationBarColor() {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ import com.afollestad.materialdialogs.util.DialogUtils;
|
|||
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
|
||||
import com.kabouzeid.gramophone.App;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.misc.SmallObservableScrollViewCallbacks;
|
||||
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
|
||||
|
|
@ -255,8 +254,8 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
|||
header.setBackgroundColor(paletteColorPrimary);
|
||||
|
||||
setStatusBarColor(paletteColorPrimary);
|
||||
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarTagEditorEnabled())
|
||||
setNavigationBarColor(ColorChooserDialog.shiftColorDown(paletteColorPrimary));
|
||||
if (PreferenceUtils.getInstance(this).coloredNavigationBarTagEditorEnabled())
|
||||
setNavigationBarColor(paletteColorPrimary);
|
||||
}
|
||||
|
||||
protected void dataChanged() {
|
||||
|
|
|
|||
|
|
@ -1,182 +0,0 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.NavigationDrawerItemAdapter;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.model.NavigationDrawerItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class NavigationDrawerFragment extends Fragment {
|
||||
|
||||
public static final int NAVIGATION_DRAWER_HEADER = -1;
|
||||
public static final int ABOUT_INDEX = 5;
|
||||
public static final int SETTINGS_INDEX = 4;
|
||||
private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
|
||||
|
||||
public View fragmentRootView;
|
||||
private NavigationDrawerCallbacks callbacks;
|
||||
private NavigationDrawerItemAdapter drawerAdapter;
|
||||
private DrawerLayout drawerLayout;
|
||||
private RecyclerView drawerRecyclerView;
|
||||
|
||||
private View headerButton;
|
||||
private ImageView albumArt;
|
||||
private TextView songTitle;
|
||||
private TextView songArtist;
|
||||
|
||||
private boolean fromSavedInstanceState;
|
||||
private boolean userLearnedDrawer;
|
||||
|
||||
private int checkedPosition = 0;
|
||||
|
||||
public NavigationDrawerFragment() {
|
||||
}
|
||||
|
||||
public boolean isDrawerOpen() {
|
||||
return drawerLayout != null && drawerLayout.isDrawerOpen(Gravity.START);
|
||||
}
|
||||
|
||||
public void setUp(final DrawerLayout drawerLayout) {
|
||||
this.drawerLayout = drawerLayout;
|
||||
this.drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
|
||||
|
||||
if (!userLearnedDrawer && !fromSavedInstanceState) {
|
||||
this.drawerLayout.openDrawer(Gravity.START);
|
||||
userLearnedDrawer = true;
|
||||
PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putBoolean(AppKeys.SP_USER_LEARNED_DRAWER, true).apply();
|
||||
}
|
||||
}
|
||||
|
||||
public TextView getSongArtist() {
|
||||
return songArtist;
|
||||
}
|
||||
|
||||
public ImageView getAlbumArtImageView() {
|
||||
return albumArt;
|
||||
}
|
||||
|
||||
public TextView getSongTitle() {
|
||||
return songTitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
try {
|
||||
callbacks = (NavigationDrawerCallbacks) activity;
|
||||
} catch (ClassCastException e) {
|
||||
throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
userLearnedDrawer = PreferenceManager.getDefaultSharedPreferences(getActivity()).getBoolean(AppKeys.SP_USER_LEARNED_DRAWER, false);
|
||||
if (savedInstanceState != null) {
|
||||
setItemChecked(savedInstanceState.getInt(STATE_SELECTED_POSITION));
|
||||
fromSavedInstanceState = true;
|
||||
}
|
||||
super.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.navigation_drawer_header, container, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
fragmentRootView = view;
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
initViews();
|
||||
setUpViews();
|
||||
}
|
||||
|
||||
private void initViews() {
|
||||
// drawerRecyclerView = (RecyclerView) fragmentRootView.findViewById(R.id.navigation_drawer_list);
|
||||
// final View drawerHeader = fragmentRootView.findViewById(R.id.header);
|
||||
// headerButton = (View) drawerHeader.findViewById(R.id.header_clickable);
|
||||
// albumArt = (ImageView) drawerHeader.findViewById(R.id.album_art);
|
||||
// songTitle = (TextView) drawerHeader.findViewById(R.id.song_title);
|
||||
// songArtist = (TextView) drawerHeader.findViewById(R.id.song_artist);
|
||||
}
|
||||
|
||||
private void setUpViews() {
|
||||
headerButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
selectItem(NAVIGATION_DRAWER_HEADER);
|
||||
}
|
||||
});
|
||||
setUpListView();
|
||||
}
|
||||
|
||||
private void setUpListView() {
|
||||
final ArrayList<NavigationDrawerItem> navigationDrawerItems = new ArrayList<>();
|
||||
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.songs), R.drawable.ic_audiotrack_white_24dp));
|
||||
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.albums), R.drawable.ic_album_white_24dp));
|
||||
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.artists), R.drawable.ic_person_white_24dp));
|
||||
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.playlists), R.drawable.ic_queue_music_white_24dp));
|
||||
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.action_settings), R.drawable.ic_settings_white_24dp));
|
||||
navigationDrawerItems.add(new NavigationDrawerItem(getString(R.string.action_about), R.drawable.ic_help_white_24dp));
|
||||
|
||||
drawerAdapter = new NavigationDrawerItemAdapter(getActivity(), navigationDrawerItems, new NavigationDrawerItemAdapter.Callback() {
|
||||
@Override
|
||||
public void onItemSelected(int index) {
|
||||
selectItem(index);
|
||||
}
|
||||
});
|
||||
drawerRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
drawerRecyclerView.setAdapter(drawerAdapter);
|
||||
}
|
||||
|
||||
private void selectItem(final int position) {
|
||||
if (position != NAVIGATION_DRAWER_HEADER &&
|
||||
position != ABOUT_INDEX && position != SETTINGS_INDEX) {
|
||||
setItemChecked(position);
|
||||
if (drawerLayout != null)
|
||||
drawerLayout.closeDrawers();
|
||||
}
|
||||
if (callbacks != null)
|
||||
callbacks.onNavigationDrawerItemSelected(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putInt(STATE_SELECTED_POSITION, checkedPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
super.onDetach();
|
||||
callbacks = null;
|
||||
}
|
||||
|
||||
public void setItemChecked(final int position) {
|
||||
if (drawerAdapter != null) {
|
||||
drawerAdapter.setChecked(position);
|
||||
checkedPosition = position;
|
||||
}
|
||||
}
|
||||
|
||||
public interface NavigationDrawerCallbacks {
|
||||
void onNavigationDrawerItemSelected(int position);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,6 @@ import android.support.v4.app.Fragment;
|
|||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
import com.kabouzeid.gramophone.ui.activities.MainActivity;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
|
|
@ -15,9 +14,7 @@ public abstract class AbsMainActivityFragment extends Fragment implements KabVie
|
|||
private boolean areViewsEnabled;
|
||||
|
||||
protected int getTopPadding() {
|
||||
return Util.getActionBarSize(getActivity()) +
|
||||
getResources().getDimensionPixelSize(R.dimen.tab_height) +
|
||||
getResources().getDimensionPixelSize(R.dimen.list_padding_vertical);
|
||||
return getResources().getDimensionPixelSize(R.dimen.list_padding_vertical);
|
||||
}
|
||||
|
||||
protected int getBottomPadding() {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import android.content.SharedPreferences;
|
|||
import android.preference.PreferenceManager;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
|
@ -33,7 +32,6 @@ public final class PreferenceUtils {
|
|||
public static final String COLORED_NAVIGATION_BAR_PLAYIST = "colored_navigation_bar_playlist";
|
||||
public static final String COLORED_NAVIGATION_BAR_TAG_EDITOR = "colored_navigation_bar_tag_editor";
|
||||
public static final String COLORED_NAVIGATION_BAR_OTHER_SCREENS = "colored_navigation_bar_other_screens";
|
||||
public static final String TRANSPARENT_TOOLBAR = "transparent_toolbar";
|
||||
public static final String ALBUM_GRID_COLUMNS = "album_grid_columns";
|
||||
public static final String ALBUM_GRID_COLUMNS_LAND = "album_grid_columns_land";
|
||||
public static final String OPAQUE_TOOLBAR_NOW_PLAYING = "opaque_toolbar_now_playing";
|
||||
|
|
@ -72,7 +70,7 @@ public final class PreferenceUtils {
|
|||
}
|
||||
|
||||
public int getThemeColorPrimaryDarker() {
|
||||
return ColorChooserDialog.shiftColorDown(getThemeColorPrimary());
|
||||
return Util.shiftColorDown(getThemeColorPrimary());
|
||||
}
|
||||
|
||||
@SuppressLint("CommitPrefEdits")
|
||||
|
|
@ -161,10 +159,6 @@ public final class PreferenceUtils {
|
|||
// mPreferences.edit().putBoolean(COLORED_NAVIGATION_BAR_OTHER_SCREENS, coloredNavbar).commit();
|
||||
// }
|
||||
|
||||
public final boolean transparentToolbar() {
|
||||
return mPreferences.getBoolean(TRANSPARENT_TOOLBAR, false);
|
||||
}
|
||||
|
||||
public final boolean opaqueToolbarNowPlaying() {
|
||||
return mPreferences.getBoolean(OPAQUE_TOOLBAR_NOW_PLAYING, false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@ package com.kabouzeid.gramophone.util;
|
|||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
|
|
@ -107,6 +109,12 @@ public class Util {
|
|||
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||
}
|
||||
|
||||
public static void setAllowDrawUnderStatusBar(Window window) {
|
||||
window.getDecorView().setSystemUiVisibility(
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
|
||||
}
|
||||
|
||||
// public static boolean isOnline(final Context context) {
|
||||
// if (context == null)
|
||||
// return false;
|
||||
|
|
@ -203,7 +211,31 @@ public class Util {
|
|||
return drawable;
|
||||
}
|
||||
|
||||
public static int getColorWithoutAlpha(@ColorInt int color) {
|
||||
public static int getOpaqueColor(@ColorInt int color) {
|
||||
return color | 0xFF000000;
|
||||
}
|
||||
|
||||
public static int getColorWithAlpha(float alpha, int baseColor) {
|
||||
int a = Math.min(255, Math.max(0, (int) (alpha * 255))) << 24;
|
||||
int rgb = 0x00ffffff & baseColor;
|
||||
return a + rgb;
|
||||
}
|
||||
|
||||
@SuppressWarnings("ResourceType")
|
||||
public static int shiftColorDown(int color) {
|
||||
int alpha = Color.alpha(color);
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
hsv[2] *= 0.9f; // value component
|
||||
return (alpha << 24) + (0x00ffffff & Color.HSVToColor(hsv));
|
||||
}
|
||||
|
||||
public static ColorStateList getEmptyColorStateList(int color) {
|
||||
return new ColorStateList(
|
||||
new int[][]{
|
||||
new int[]{}
|
||||
},
|
||||
new int[]{color}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -13,8 +13,9 @@ import android.util.AttributeSet;
|
|||
import android.widget.FrameLayout;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
|
||||
public class CircleView extends FrameLayout {
|
||||
public class ColorView extends FrameLayout {
|
||||
|
||||
private final Bitmap mCheck;
|
||||
private final Paint paint;
|
||||
|
|
@ -22,19 +23,19 @@ public class CircleView extends FrameLayout {
|
|||
private Paint paintCheck;
|
||||
private final int borderWidth;
|
||||
|
||||
public CircleView(Context context) {
|
||||
public ColorView(Context context) {
|
||||
this(context, null, 0);
|
||||
}
|
||||
|
||||
public CircleView(Context context, AttributeSet attrs) {
|
||||
public ColorView(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public CircleView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
public ColorView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
final int checkSize = (int) context.getResources().getDimension(R.dimen.circle_view_check);
|
||||
mCheck = getResizedBitmap(BitmapFactory.decodeResource(context.getResources(),
|
||||
R.drawable.ic_check_white_24dp), checkSize, checkSize);
|
||||
R.drawable.ic_checkbox_marked_circle_outline_white_24dp), checkSize, checkSize);
|
||||
borderWidth = (int) getResources().getDimension(R.dimen.circle_view_border);
|
||||
|
||||
paint = new Paint();
|
||||
|
|
@ -42,7 +43,6 @@ public class CircleView extends FrameLayout {
|
|||
|
||||
paintBorder = new Paint();
|
||||
paintBorder.setAntiAlias(true);
|
||||
paintBorder.setColor(Color.BLACK);
|
||||
|
||||
setWillNotDraw(false);
|
||||
}
|
||||
|
|
@ -64,12 +64,7 @@ public class CircleView extends FrameLayout {
|
|||
@Override
|
||||
public void setBackgroundColor(int color) {
|
||||
paint.setColor(color);
|
||||
requestLayout();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public void setBorderColor(int color) {
|
||||
paintBorder.setColor(color);
|
||||
paintBorder.setColor(Util.shiftColorDown(color));
|
||||
requestLayout();
|
||||
invalidate();
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 645 B |
Binary file not shown.
|
After Width: | Height: | Size: 439 B |
Binary file not shown.
|
After Width: | Height: | Size: 785 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
|
|
@ -5,5 +5,5 @@
|
|||
android:height="20dp"
|
||||
android:width="3dp" />
|
||||
<solid
|
||||
android:color="?colorAccent" />
|
||||
android:color="@color/black" />
|
||||
</shape>
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
android:layout_height="match_parent">
|
||||
|
||||
<FrameLayout
|
||||
android:background="?android:colorBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/header_image_height">
|
||||
|
||||
|
|
@ -73,11 +74,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:id="@+id/status_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/status_bar_padding"
|
||||
android:background="@android:color/transparent" />
|
||||
<include layout="@layout/status_bar" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
|
||||
<FrameLayout
|
||||
android:background="?android:colorBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/header_image_height">
|
||||
|
||||
|
|
@ -74,11 +75,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:id="@+id/status_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/status_bar_padding"
|
||||
android:background="@android:color/transparent" />
|
||||
<include layout="@layout/status_bar" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -1,38 +1,33 @@
|
|||
<android.support.v4.widget.DrawerLayout
|
||||
android:fitsSystemWindows="true"
|
||||
android:id="@+id/drawer_layout"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context=".DrawerActivity">
|
||||
|
||||
<FrameLayout
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<LinearLayout
|
||||
<android.support.design.widget.AppBarLayout
|
||||
android:id="@+id/toolbar_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:elevation="@dimen/toolbar_elevation"
|
||||
android:orientation="vertical"
|
||||
tools:ignore="UnusedAttribute">
|
||||
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
|
||||
|
||||
<FrameLayout
|
||||
app:layout_scrollFlags="scroll|enterAlways"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
style="@style/Toolbar"
|
||||
android:elevation="0dp">
|
||||
android:elevation="0dp"
|
||||
tools:ignore="UnusedAttribute">
|
||||
|
||||
</android.support.v7.widget.Toolbar>
|
||||
|
||||
|
|
@ -43,42 +38,35 @@
|
|||
|
||||
</FrameLayout>
|
||||
|
||||
<com.astuetz.PagerSlidingTabStrip
|
||||
<android.support.design.widget.TabLayout
|
||||
android:id="@+id/tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/tab_height"
|
||||
android:background="?colorPrimary"
|
||||
android:elevation="0dp"
|
||||
android:paddingLeft="64dp"
|
||||
android:paddingStart="64dp"
|
||||
android:textColor="@color/sliding_tabs_deactivated"
|
||||
android:textColorPrimary="@color/sliding_tabs_activated"
|
||||
android:transitionName="sliding_tabs"
|
||||
app:pstsIndicatorHeight="3dp"
|
||||
app:pstsTabBackground="?selectableItemBackground"
|
||||
app:pstsTabPaddingLeftRight="8dp"
|
||||
tools:ignore="NewApi,RtlSymmetry,UnusedAttribute" />
|
||||
app:tabContentStart="72dp"
|
||||
app:tabIndicatorColor="#00000000"
|
||||
app:tabMode="scrollable" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:background="@drawable/shadow_down" />
|
||||
|
||||
</LinearLayout>
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="end|bottom" />
|
||||
android:layout_gravity="end|bottom"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</FrameLayout>
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:fitsSystemWindows="true"
|
||||
app:menu="@menu/menu_drawer" />
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
<!-- BOTTOM-->
|
||||
|
||||
<LinearLayout
|
||||
android:background="?android:colorBackground"
|
||||
android:id="@+id/footer_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -200,16 +201,18 @@
|
|||
|
||||
<!-- TOOLBAR-->
|
||||
|
||||
<FrameLayout
|
||||
<LinearLayout
|
||||
android:id="@+id/toolbar_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="@dimen/status_bar_padding">
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/status_bar" />
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
style="@style/Toolbar"
|
||||
android:background="#00000000" />
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/status_bar_padding">
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -49,6 +48,7 @@
|
|||
<android.support.design.widget.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
style="@style/PlayPauseFab"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="16dp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
|
@ -2,8 +2,7 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/status_bar_padding">
|
||||
android:orientation="vertical">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:columnWidth="56dp"
|
||||
android:numColumns="auto_fit"
|
||||
android:numColumns="7"
|
||||
android:verticalSpacing="4dp"
|
||||
android:horizontalSpacing="4dp"
|
||||
android:padding="16dp"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.kabouzeid.gramophone.views.CircleView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp" />
|
||||
<com.kabouzeid.gramophone.views.ColorView
|
||||
android:id="@+id/color_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="1dp">
|
||||
android:layout_margin="2dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/content"
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:id="@+id/divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?inset_divider"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?rect_selector"
|
||||
android:minHeight="48dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:fontFamily="@string/font_fontFamily_medium"
|
||||
android:textStyle="@integer/font_textStyle_medium"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center_vertical"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body2" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
android:gravity="center_vertical"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<com.kabouzeid.gramophone.views.CircleView
|
||||
<com.kabouzeid.gramophone.views.ColorView
|
||||
android:id="@+id/circle"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
|
|
|
|||
7
app/src/main/res/layout/status_bar.xml
Normal file
7
app/src/main/res/layout/status_bar.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<View
|
||||
android:id="@+id/status_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/status_bar_padding"
|
||||
android:background="@android:color/transparent"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android" />
|
||||
|
|
@ -5,7 +5,6 @@
|
|||
<item name="rect_selector">@drawable/rect_ripple_selector_dark</item>
|
||||
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.MaterialMusic.Light" parent="Theme.MaterialMusic.Base.Light">
|
||||
|
|
@ -13,7 +12,6 @@
|
|||
<item name="rect_selector">@drawable/rect_ripple_selector</item>
|
||||
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.MaterialMusic.Notification" parent="@android:style/TextAppearance.Material.Notification" />
|
||||
|
|
|
|||
|
|
@ -1,53 +1,261 @@
|
|||
<resources>
|
||||
|
||||
<array name="colors_primary">
|
||||
<item>#9E9E9E</item>
|
||||
<item>#424242</item>
|
||||
<item>#1C1C1C</item>
|
||||
<item>#000000</item>
|
||||
<item>#607D8B</item>
|
||||
<item>#37474F</item>
|
||||
<item>#795548</item>
|
||||
<item>#D32F2F</item>
|
||||
<item>#E91E63</item>
|
||||
<item>#9C27B0</item>
|
||||
<item>#5E35B1</item>
|
||||
<item>#3F51B5</item>
|
||||
<item>#1976D2</item>
|
||||
<item>#03A9F4</item>
|
||||
<item>#00BCD4</item>
|
||||
|
||||
<item>#e57373</item>
|
||||
<item>#ef5350</item>
|
||||
<item>#f44336</item>
|
||||
<item>#e53935</item>
|
||||
<item>#d32f2f</item>
|
||||
<item>#c62828</item>
|
||||
<item>#b71c1c</item>
|
||||
|
||||
|
||||
<item>#f06292</item>
|
||||
<item>#ec407a</item>
|
||||
<item>#e91e63</item>
|
||||
<item>#d81b60</item>
|
||||
<item>#c2185b</item>
|
||||
<item>#ad1457</item>
|
||||
<item>#880e4f</item>
|
||||
|
||||
<item>#ba68c8</item>
|
||||
<item>#ab47bc</item>
|
||||
<item>#9c27b0</item>
|
||||
<item>#8e24aa</item>
|
||||
<item>#7b1fa2</item>
|
||||
<item>#6a1b9a</item>
|
||||
<item>#4a148c</item>
|
||||
|
||||
|
||||
<item>#9575cd</item>
|
||||
<item>#7e57c2</item>
|
||||
<item>#673ab7</item>
|
||||
<item>#5e35b1</item>
|
||||
<item>#512da8</item>
|
||||
<item>#4527a0</item>
|
||||
<item>#311b92</item>
|
||||
|
||||
|
||||
<item>#7986cb</item>
|
||||
<item>#5c6bc0</item>
|
||||
<item>#3f51b5</item>
|
||||
<item>#3949ab</item>
|
||||
<item>#303f9f</item>
|
||||
<item>#283593</item>
|
||||
<item>#1a237e</item>
|
||||
|
||||
|
||||
<item>#64b5f6</item>
|
||||
<item>#42a5f5</item>
|
||||
<item>#2196f3</item>
|
||||
<item>#1e88e5</item>
|
||||
<item>#1976d2</item>
|
||||
<item>#1565c0</item>
|
||||
<item>#0d47a1</item>
|
||||
|
||||
|
||||
<item>#4fc3f7</item>
|
||||
<item>#29b6f6</item>
|
||||
<item>#03a9f4</item>
|
||||
<item>#039be5</item>
|
||||
<item>#0288d1</item>
|
||||
<item>#0277bd</item>
|
||||
<item>#01579b</item>
|
||||
|
||||
|
||||
<item>#4dd0e1</item>
|
||||
<item>#26c6da</item>
|
||||
<item>#00bcd4</item>
|
||||
<item>#00acc1</item>
|
||||
<item>#0097a7</item>
|
||||
<item>#00838f</item>
|
||||
<item>#006064</item>
|
||||
|
||||
|
||||
<item>#4db6ac</item>
|
||||
<item>#26a69a</item>
|
||||
<item>#009688</item>
|
||||
<item>#43A047</item>
|
||||
<item>#7CB342</item>
|
||||
<item>#C0CA33</item>
|
||||
<item>#FBC02D</item>
|
||||
<item>#FFB300</item>
|
||||
<item>#FB8C00</item>
|
||||
<item>#F4511E</item>
|
||||
<item>#00897b</item>
|
||||
<item>#00796b</item>
|
||||
<item>#00695c</item>
|
||||
<item>#004d40</item>
|
||||
|
||||
|
||||
<item>#81c784</item>
|
||||
<item>#66bb6a</item>
|
||||
<item>#4caf50</item>
|
||||
<item>#43a047</item>
|
||||
<item>#388e3c</item>
|
||||
<item>#2e7d32</item>
|
||||
<item>#1b5e20</item>
|
||||
|
||||
|
||||
<item>#aed581</item>
|
||||
<item>#9ccc65</item>
|
||||
<item>#8bc34a</item>
|
||||
<item>#7cb342</item>
|
||||
<item>#689f38</item>
|
||||
<item>#558b2f</item>
|
||||
<item>#33691e</item>
|
||||
|
||||
|
||||
<item>#dce775</item>
|
||||
<item>#d4e157</item>
|
||||
<item>#cddc39</item>
|
||||
<item>#c0ca33</item>
|
||||
<item>#afb42b</item>
|
||||
<item>#9e9d24</item>
|
||||
<item>#827717</item>
|
||||
|
||||
|
||||
<item>#fff176</item>
|
||||
<item>#ffee58</item>
|
||||
<item>#ffeb3b</item>
|
||||
<item>#fdd835</item>
|
||||
<item>#fbc02d</item>
|
||||
<item>#f9a825</item>
|
||||
<item>#f57f17</item>
|
||||
|
||||
|
||||
<item>#ffd54f</item>
|
||||
<item>#ffca28</item>
|
||||
<item>#ffc107</item>
|
||||
<item>#ffb300</item>
|
||||
<item>#ffa000</item>
|
||||
<item>#ff8f00</item>
|
||||
<item>#ff6f00</item>
|
||||
|
||||
|
||||
<item>#ffb74d</item>
|
||||
<item>#ffa726</item>
|
||||
<item>#ff9800</item>
|
||||
<item>#fb8c00</item>
|
||||
<item>#f57c00</item>
|
||||
<item>#ef6c00</item>
|
||||
<item>#e65100</item>
|
||||
|
||||
|
||||
<item>#ff8a65</item>
|
||||
<item>#ff7043</item>
|
||||
<item>#ff5722</item>
|
||||
<item>#f4511e</item>
|
||||
<item>#e64a19</item>
|
||||
<item>#d84315</item>
|
||||
<item>#bf360c</item>
|
||||
|
||||
|
||||
<item>#a1887f</item>
|
||||
<item>#8d6e63</item>
|
||||
<item>#795548</item>
|
||||
<item>#6d4c41</item>
|
||||
<item>#5d4037</item>
|
||||
<item>#4e342e</item>
|
||||
<item>#3e2723</item>
|
||||
|
||||
<item>#e0e0e0</item>
|
||||
<item>#bdbdbd</item>
|
||||
<item>#9e9e9e</item>
|
||||
<item>#757575</item>
|
||||
<item>#616161</item>
|
||||
<item>#424242</item>
|
||||
<item>#212121</item>
|
||||
|
||||
<item>#90a4ae</item>
|
||||
<item>#78909c</item>
|
||||
<item>#607d8b</item>
|
||||
<item>#546e7a</item>
|
||||
<item>#455a64</item>
|
||||
<item>#37474f</item>
|
||||
<item>#263238</item>
|
||||
|
||||
</array>
|
||||
|
||||
<array name="colors_accent">
|
||||
<item>#3F51B5</item>
|
||||
<item>#9E9E9E</item>
|
||||
<item>#607D8B</item>
|
||||
<item>#795548</item>
|
||||
<item>#D32F2F</item>
|
||||
<item>#E91E63</item>
|
||||
<item>#FF4081</item>
|
||||
<item>#9C27B0</item>
|
||||
<item>#5E35B1</item>
|
||||
<item>#1976D2</item>
|
||||
<item>#03A9F4</item>
|
||||
<item>#00BCD4</item>
|
||||
<item>#009688</item>
|
||||
<item>#43A047</item>
|
||||
<item>#7CB342</item>
|
||||
<item>#C0CA33</item>
|
||||
<item>#FBC02D</item>
|
||||
<item>#FFB300</item>
|
||||
<item>#FB8C00</item>
|
||||
<item>#F4511E</item>
|
||||
<item>#FFFFFF</item>
|
||||
|
||||
<item>#ff8a80</item>
|
||||
<item>#ff5252</item>
|
||||
<item>#ff1744</item>
|
||||
<item>#d50000</item>
|
||||
|
||||
<item>#ff80ab</item>
|
||||
<item>#ff4081</item>
|
||||
<item>#f50057</item>
|
||||
<item>#c51162</item>
|
||||
|
||||
<item>#ea80fc</item>
|
||||
<item>#e040fb</item>
|
||||
<item>#d500f9</item>
|
||||
<item>#aa00ff</item>
|
||||
|
||||
<item>#b388ff</item>
|
||||
<item>#7c4dff</item>
|
||||
<item>#651fff</item>
|
||||
<item>#6200ea</item>
|
||||
|
||||
<item>#8c9eff</item>
|
||||
<item>#536dfe</item>
|
||||
<item>#3d5afe</item>
|
||||
<item>#304ffe</item>
|
||||
|
||||
<item>#82b1ff</item>
|
||||
<item>#448aff</item>
|
||||
<item>#2979ff</item>
|
||||
<item>#2962ff</item>
|
||||
|
||||
<item>#80d8ff</item>
|
||||
<item>#40c4ff</item>
|
||||
<item>#00b0ff</item>
|
||||
<item>#0091ea</item>
|
||||
|
||||
<item>#84ffff</item>
|
||||
<item>#18ffff</item>
|
||||
<item>#00e5ff</item>
|
||||
<item>#00b8d4</item>
|
||||
|
||||
<item>#a7ffeb</item>
|
||||
<item>#64ffda</item>
|
||||
<item>#1de9b6</item>
|
||||
<item>#00bfa5</item>
|
||||
|
||||
<item>#b9f6ca</item>
|
||||
<item>#69f0ae</item>
|
||||
<item>#00e676</item>
|
||||
<item>#00c853</item>
|
||||
|
||||
<item>#ccff90</item>
|
||||
<item>#b2ff59</item>
|
||||
<item>#76ff03</item>
|
||||
<item>#64dd17</item>
|
||||
|
||||
<item>#f4ff81</item>
|
||||
<item>#eeff41</item>
|
||||
<item>#c6ff00</item>
|
||||
<item>#aeea00</item>
|
||||
|
||||
<item>#ffff8d</item>
|
||||
<item>#ffff00</item>
|
||||
<item>#ffea00</item>
|
||||
<item>#ffd600</item>
|
||||
|
||||
<item>#ffe57f</item>
|
||||
<item>#ffd740</item>
|
||||
<item>#ffc400</item>
|
||||
<item>#ffab00</item>
|
||||
|
||||
<item>#ffd180</item>
|
||||
<item>#ffab40</item>
|
||||
<item>#ff9100</item>
|
||||
<item>#ff6d00</item>
|
||||
|
||||
<item>#ff9e80</item>
|
||||
<item>#ff6e40</item>
|
||||
<item>#ff3d00</item>
|
||||
<item>#dd2c00</item>
|
||||
|
||||
<item>#fff</item>
|
||||
<item>#000</item>
|
||||
|
||||
</array>
|
||||
|
||||
</resources>
|
||||
|
|
@ -2,22 +2,16 @@
|
|||
<resources>
|
||||
<attr name="title_text_color" format="color" />
|
||||
<attr name="caption_text_color" format="color" />
|
||||
<attr name="nav_drawer_icon_color" format="color" />
|
||||
|
||||
<attr name="music_controller_container_color" format="color" />
|
||||
<attr name="navigation_drawer_background_color" format="color" />
|
||||
<attr name="inset_divider" format="color" />
|
||||
|
||||
<attr name="list_selector" format="reference" />
|
||||
<attr name="round_selector" format="reference" />
|
||||
<attr name="rect_selector" format="reference" />
|
||||
|
||||
<attr name="separator_color" format="color" />
|
||||
|
||||
<attr name="drawable_color" format="color" />
|
||||
<attr name="drawable_color_enabled" format="color" />
|
||||
|
||||
<attr name="themed_drawable_color" format="color" />
|
||||
|
||||
<attr name="check_mark_color" format="color" />
|
||||
|
||||
<attr name="default_bar_color" format="color" />
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
<color name="indigo_500">#3f51b5</color>
|
||||
|
||||
<color name="black">#000000</color>
|
||||
<color name="white">#ffffff</color>
|
||||
<color name="black">#000</color>
|
||||
<color name="white">#fff</color>
|
||||
|
||||
<color name="grey_300">#e0e0e0</color>
|
||||
<color name="grey_500">#9e9e9e</color>
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@
|
|||
<string name="pref_title_navigation_bar">Colored navigation bar</string>
|
||||
<string name="pref_title_set_default_start_page">Start page</string>
|
||||
<string name="title_activity_settings">Settings</string>
|
||||
<string name="pref_title_transparent_toolbar">Semi-Transparent toolbar</string>
|
||||
<string name="pref_title_colored_navigation_bar_artists">Artist view</string>
|
||||
<string name="pref_title_colored_navigation_bar_albums">Album view</string>
|
||||
<string name="pref_title_colored_navigation_bar_current_playing">Playing view</string>
|
||||
|
|
@ -136,7 +135,6 @@
|
|||
<string name="playlist_name">Playlist name</string>
|
||||
<string name="song">Song</string>
|
||||
<string name="pref_only_lollipop">Only available on Lollipop.</string>
|
||||
<string name="pref_summary_transparent_toolbar">Content scrolling underneath the toolbar is visible.</string>
|
||||
<string name="pref_summary_colored_album_footers">Album footers in the grid are colored with the album cover\'s palette.</string>
|
||||
<string name="pref_summary_force_square_album_art">Album art in the now playing view is forced to be squared.</string>
|
||||
<string name="pref_summary_opaque_toolbar_now_playing">The toolbar in the now playing view is opaque and no longer covers the album art.</string>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
<resources>
|
||||
|
||||
<style name="Theme.MaterialMusic.Base" parent="Theme.AppCompat.NoActionBar">
|
||||
<!-- FIX FOR DESIGN LIB 22.2.0 NAVDRAWER ITEM FONT-->
|
||||
<item name="textAppearanceListItem">@style/TextAppearance.AppCompat.Body2</item>
|
||||
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<item name="windowActionBarOverlay">true</item>
|
||||
|
||||
|
|
@ -13,17 +16,11 @@
|
|||
<item name="music_controller_container_color">
|
||||
@color/materialmusic_dark_music_controller_container_color
|
||||
</item>
|
||||
<item name="navigation_drawer_background_color">
|
||||
@color/materialmusic_dark_navigation_drawer_background_color
|
||||
</item>
|
||||
|
||||
<item name="round_selector">@drawable/round_selector_dark</item>
|
||||
<item name="rect_selector">@drawable/rect_selector_dark</item>
|
||||
<item name="separator_color">@color/materialmusic_dark_separator_color</item>
|
||||
|
||||
<item name="inset_divider">@color/md_divider_white</item>
|
||||
<item name="nav_drawer_icon_color">#fff</item>
|
||||
|
||||
<item name="themed_drawable_color">@color/materialmusic_dark_themed_drawable_color</item>
|
||||
<item name="check_mark_color">@color/grey_900</item>
|
||||
|
||||
|
|
@ -34,6 +31,9 @@
|
|||
</style>
|
||||
|
||||
<style name="Theme.MaterialMusic.Base.Light" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- FIX FOR DESIGN LIB 22.2.0 NAVDRAWER ITEM FONT-->
|
||||
<item name="textAppearanceListItem">@style/TextAppearance.AppCompat.Body2</item>
|
||||
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<item name="windowActionBarOverlay">true</item>
|
||||
|
||||
|
|
@ -45,17 +45,11 @@
|
|||
<item name="music_controller_container_color">
|
||||
@color/materialmusic_music_controller_container_color
|
||||
</item>
|
||||
<item name="navigation_drawer_background_color">
|
||||
@color/materialmusic_navigation_drawer_background_color
|
||||
</item>
|
||||
|
||||
<item name="round_selector">@drawable/round_selector</item>
|
||||
<item name="rect_selector">@drawable/rect_selector</item>
|
||||
<item name="separator_color">@color/materialmusic_separator_color</item>
|
||||
|
||||
<item name="inset_divider">@color/md_divider_black</item>
|
||||
<item name="nav_drawer_icon_color">#000</item>
|
||||
|
||||
<item name="themed_drawable_color">@color/materialmusic_themed_drawable_color</item>
|
||||
<item name="check_mark_color">@color/white</item>
|
||||
|
||||
|
|
|
|||
|
|
@ -22,14 +22,6 @@
|
|||
android:title="@string/accent_color"
|
||||
android:summary="@string/accent_color_desc" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="transparent_toolbar"
|
||||
android:title="@string/pref_title_transparent_toolbar"
|
||||
android:summary="@string/pref_summary_transparent_toolbar"
|
||||
android:layout="@layout/preference_custom"
|
||||
android:widgetLayout="@layout/preference_dynamiccheckbox" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="opaque_toolbar_now_playing"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue