Nav drawer android design support library and more
This commit is contained in:
parent
865f72e5bb
commit
b233b3b718
25 changed files with 303 additions and 405 deletions
|
|
@ -21,7 +21,7 @@ repositories {
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 22
|
compileSdkVersion 22
|
||||||
buildToolsVersion "22.0.1"
|
buildToolsVersion "23.0.0 rc1"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.kabouzeid.gramophone"
|
applicationId "com.kabouzeid.gramophone"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.kabouzeid.gramophone.adapter;
|
package com.kabouzeid.gramophone.adapter;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
|
@ -151,9 +150,9 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
||||||
view.setOnLongClickListener(this);
|
view.setOnLongClickListener(this);
|
||||||
|
|
||||||
// fixes the ripple starts at the right position
|
// fixes the ripple starts at the right position
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
view.setOnTouchListener(new View.OnTouchListener() {
|
view.setOnTouchListener(new View.OnTouchListener() {
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onTouch(View view, MotionEvent motionEvent) {
|
public boolean onTouch(View view, MotionEvent motionEvent) {
|
||||||
((FrameLayout) view.findViewById(R.id.content)).getForeground().setHotspot(motionEvent.getX(), motionEvent.getY());
|
((FrameLayout) view.findViewById(R.id.content)).getForeground().setHotspot(motionEvent.getX(), motionEvent.getY());
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
|
@ -111,7 +110,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
@ -119,7 +117,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
|
|
||||||
App.bus.register(this);
|
App.bus.register(this);
|
||||||
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
postponeEnterTransition();
|
postponeEnterTransition();
|
||||||
if (PreferenceUtils.getInstance(this).coloredNavigationBarAlbumEnabled())
|
if (PreferenceUtils.getInstance(this).coloredNavigationBarAlbumEnabled())
|
||||||
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
|
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
|
||||||
|
|
@ -140,7 +138,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
setUpToolBar();
|
setUpToolBar();
|
||||||
setUpViews();
|
setUpViews();
|
||||||
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
getWindow().getEnterTransition().addListener(new SmallTransitionListener() {
|
getWindow().getEnterTransition().addListener(new SmallTransitionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onTransitionStart(Transition transition) {
|
public void onTransitionStart(Transition transition) {
|
||||||
|
|
@ -164,21 +162,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorStatusBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTag() {
|
public String getTag() {
|
||||||
return TAG;
|
return TAG;
|
||||||
|
|
@ -222,20 +205,22 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
.resetViewBeforeLoading(true)
|
.resetViewBeforeLoading(true)
|
||||||
.build(),
|
.build(),
|
||||||
new SimpleImageLoadingListener() {
|
new SimpleImageLoadingListener() {
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
|
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
|
||||||
applyPalette(null);
|
applyPalette(null);
|
||||||
albumArtBackground.setImageBitmap(new StackBlurManager(BitmapFactory.decodeResource(getResources(), R.drawable.default_album_art)).process(10));
|
albumArtBackground.setImageBitmap(new StackBlurManager(BitmapFactory.decodeResource(getResources(), R.drawable.default_album_art)).process(10));
|
||||||
if (Util.isAtLeastLollipop()) startPostponedEnterTransition();
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
startPostponedEnterTransition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
|
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
|
||||||
applyPalette(loadedImage);
|
applyPalette(loadedImage);
|
||||||
albumArtBackground.setImageBitmap(new StackBlurManager(loadedImage).process(10));
|
albumArtBackground.setImageBitmap(new StackBlurManager(loadedImage).process(10));
|
||||||
if (Util.isAtLeastLollipop()) startPostponedEnterTransition();
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
startPostponedEnterTransition();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
@ -245,7 +230,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
if (bitmap != null) {
|
if (bitmap != null) {
|
||||||
Palette.from(bitmap)
|
Palette.from(bitmap)
|
||||||
.generate(new Palette.PaletteAsyncListener() {
|
.generate(new Palette.PaletteAsyncListener() {
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
public void onGenerated(Palette palette) {
|
public void onGenerated(Palette palette) {
|
||||||
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
||||||
|
|
@ -266,7 +251,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void resetColors() {
|
private void resetColors() {
|
||||||
int titleTextColor = DialogUtils.resolveColor(this, R.attr.title_text_color);
|
int titleTextColor = DialogUtils.resolveColor(this, R.attr.title_text_color);
|
||||||
int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
||||||
|
|
@ -291,7 +276,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
|
||||||
return toolbarColor;
|
return toolbarColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void setNavigationBarColored(boolean colored) {
|
private void setNavigationBarColored(boolean colored) {
|
||||||
if (colored) {
|
if (colored) {
|
||||||
setNavigationBarColor(toolbarColor);
|
setNavigationBarColor(toolbarColor);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
|
@ -125,7 +124,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
@ -133,7 +132,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
|
|
||||||
App.bus.register(this);
|
App.bus.register(this);
|
||||||
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
postponeEnterTransition();
|
postponeEnterTransition();
|
||||||
if (PreferenceUtils.getInstance(this).coloredNavigationBarArtistEnabled())
|
if (PreferenceUtils.getInstance(this).coloredNavigationBarArtistEnabled())
|
||||||
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
|
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
|
||||||
|
|
@ -148,12 +147,12 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
getSupportActionBar().setTitle(null);
|
getSupportActionBar().setTitle(null);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
fixLollipopTransitionImageWrongSize();
|
fixLollipopTransitionImageWrongSize();
|
||||||
startPostponedEnterTransition();
|
startPostponedEnterTransition();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
getWindow().getEnterTransition().addListener(new SmallTransitionListener() {
|
getWindow().getEnterTransition().addListener(new SmallTransitionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onTransitionStart(Transition transition) {
|
public void onTransitionStart(Transition transition) {
|
||||||
|
|
@ -177,21 +176,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorStatusBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initViews() {
|
private void initViews() {
|
||||||
artistImage = (ImageView) findViewById(R.id.artist_image);
|
artistImage = (ImageView) findViewById(R.id.artist_image);
|
||||||
artistImageBackground = (ImageView) findViewById(R.id.artist_image_background);
|
artistImageBackground = (ImageView) findViewById(R.id.artist_image_background);
|
||||||
|
|
@ -235,7 +219,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
loadBiography();
|
loadBiography();
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void setNavigationBarColored(boolean colored) {
|
private void setNavigationBarColored(boolean colored) {
|
||||||
if (colored) {
|
if (colored) {
|
||||||
setNavigationBarColor(toolbarColor);
|
setNavigationBarColor(toolbarColor);
|
||||||
|
|
@ -327,7 +311,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
if (bitmap != null) {
|
if (bitmap != null) {
|
||||||
Palette.from(bitmap)
|
Palette.from(bitmap)
|
||||||
.generate(new Palette.PaletteAsyncListener() {
|
.generate(new Palette.PaletteAsyncListener() {
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
public void onGenerated(Palette palette) {
|
public void onGenerated(Palette palette) {
|
||||||
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
||||||
|
|
@ -365,7 +349,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
return toolbarColor;
|
return toolbarColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void resetColors() {
|
private void resetColors() {
|
||||||
int titleTextColor = DialogUtils.resolveColor(this, R.attr.title_text_color);
|
int titleTextColor = DialogUtils.resolveColor(this, R.attr.title_text_color);
|
||||||
int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color);
|
||||||
|
|
@ -443,7 +427,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
|
||||||
toolbar.setEnabled(false);
|
toolbar.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void fixLollipopTransitionImageWrongSize() {
|
private void fixLollipopTransitionImageWrongSize() {
|
||||||
getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() {
|
getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.design.widget.NavigationView;
|
||||||
import android.support.v4.util.Pair;
|
import android.support.v4.util.Pair;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.support.v4.widget.DrawerLayout;
|
import android.support.v4.widget.DrawerLayout;
|
||||||
|
|
@ -16,15 +19,14 @@ import android.support.v7.internal.view.menu.MenuPopupHelper;
|
||||||
import android.support.v7.widget.ActionMenuPresenter;
|
import android.support.v7.widget.ActionMenuPresenter;
|
||||||
import android.support.v7.widget.ActionMenuView;
|
import android.support.v7.widget.ActionMenuView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.SubMenu;
|
import android.view.SubMenu;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.afollestad.materialcab.MaterialCab;
|
import com.afollestad.materialcab.MaterialCab;
|
||||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||||
|
|
@ -43,7 +45,6 @@ import com.kabouzeid.gramophone.model.MusicRemoteEvent;
|
||||||
import com.kabouzeid.gramophone.model.Song;
|
import com.kabouzeid.gramophone.model.Song;
|
||||||
import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
|
import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
|
||||||
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
|
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
|
||||||
import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
|
|
||||||
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment;
|
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AbsMainActivityFragment;
|
||||||
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment;
|
import com.kabouzeid.gramophone.ui.fragments.mainactivityfragments.AlbumViewFragment;
|
||||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||||
|
|
@ -60,20 +61,20 @@ import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class MainActivity extends AbsFabActivity
|
public class MainActivity extends AbsFabActivity
|
||||||
implements NavigationDrawerFragment.NavigationDrawerCallbacks, KabViewsDisableAble, CabHolder {
|
implements KabViewsDisableAble, CabHolder, View.OnClickListener {
|
||||||
|
|
||||||
public static final String TAG = MainActivity.class.getSimpleName();
|
public static final String TAG = MainActivity.class.getSimpleName();
|
||||||
|
|
||||||
private DrawerLayout drawerLayout;
|
private DrawerLayout drawerLayout;
|
||||||
private ActionBarDrawerToggle drawerToggle;
|
private ActionBarDrawerToggle drawerToggle;
|
||||||
private NavigationDrawerFragment navigationDrawerFragment;
|
|
||||||
private Toolbar toolbar;
|
private Toolbar toolbar;
|
||||||
private PagerAdapter pagerAdapter;
|
private PagerAdapter pagerAdapter;
|
||||||
private ViewPager viewPager;
|
private ViewPager viewPager;
|
||||||
private PagerSlidingTabStrip slidingTabLayout;
|
private PagerSlidingTabStrip slidingTabLayout;
|
||||||
private int currentPage = -1;
|
private int currentPage = -1;
|
||||||
private MaterialCab cab;
|
private MaterialCab cab;
|
||||||
private View statusBar;
|
private NavigationView navigationView;
|
||||||
|
private View navigationDrawerHeader;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
@ -81,31 +82,16 @@ public class MainActivity extends AbsFabActivity
|
||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
initViews();
|
initViews();
|
||||||
navigationDrawerFragment.setUp(
|
|
||||||
drawerLayout
|
|
||||||
);
|
|
||||||
setUpDrawerLayout();
|
setUpDrawerLayout();
|
||||||
setUpToolBar();
|
setUpToolBar();
|
||||||
setUpViewPager();
|
setUpViewPager();
|
||||||
|
|
||||||
|
if (PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreensEnabled())
|
||||||
|
setNavigationBarThemeColor();
|
||||||
|
|
||||||
handlePlaybackIntent(getIntent());
|
handlePlaybackIntent(getIntent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorStatusBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreensEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setUpViewPager() {
|
private void setUpViewPager() {
|
||||||
pagerAdapter = new PagerAdapter(this, getSupportFragmentManager());
|
pagerAdapter = new PagerAdapter(this, getSupportFragmentManager());
|
||||||
final PagerAdapter.MusicFragments[] fragments = PagerAdapter.MusicFragments.values();
|
final PagerAdapter.MusicFragments[] fragments = PagerAdapter.MusicFragments.values();
|
||||||
|
|
@ -121,7 +107,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
currentPage = startPosition;
|
currentPage = startPosition;
|
||||||
viewPager.setCurrentItem(startPosition);
|
viewPager.setCurrentItem(startPosition);
|
||||||
|
|
||||||
navigationDrawerFragment.setItemChecked(startPosition);
|
navigationView.getMenu().getItem(startPosition).setChecked(true);
|
||||||
|
|
||||||
slidingTabLayout.setIndicatorColor(ThemeSingleton.get().positiveColor);
|
slidingTabLayout.setIndicatorColor(ThemeSingleton.get().positiveColor);
|
||||||
slidingTabLayout.setViewPager(viewPager);
|
slidingTabLayout.setViewPager(viewPager);
|
||||||
|
|
@ -134,7 +120,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(final int position) {
|
public void onPageSelected(final int position) {
|
||||||
navigationDrawerFragment.setItemChecked(position);
|
navigationView.getMenu().getItem(position).setChecked(true);
|
||||||
currentPage = position;
|
currentPage = position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -148,9 +134,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
viewPager = (ViewPager) findViewById(R.id.pager);
|
viewPager = (ViewPager) findViewById(R.id.pager);
|
||||||
slidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.tabs);
|
slidingTabLayout = (PagerSlidingTabStrip) findViewById(R.id.tabs);
|
||||||
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||||
navigationDrawerFragment = (NavigationDrawerFragment)
|
navigationView = (NavigationView) findViewById(R.id.nav_view);
|
||||||
getFragmentManager().findFragmentById(R.id.navigation_drawer);
|
|
||||||
statusBar = findViewById(R.id.status_bar);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpToolBar() {
|
private void setUpToolBar() {
|
||||||
|
|
@ -166,7 +150,75 @@ public class MainActivity extends AbsFabActivity
|
||||||
final int colorPrimary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
final int colorPrimary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
||||||
ViewUtil.setBackgroundAlpha(toolbar, alpha, colorPrimary);
|
ViewUtil.setBackgroundAlpha(toolbar, alpha, colorPrimary);
|
||||||
ViewUtil.setBackgroundAlpha(slidingTabLayout, alpha, colorPrimary);
|
ViewUtil.setBackgroundAlpha(slidingTabLayout, alpha, colorPrimary);
|
||||||
ViewUtil.setBackgroundAlpha(statusBar, alpha, colorPrimary);
|
}
|
||||||
|
|
||||||
|
private void setUpNavigationView() {
|
||||||
|
final int colorAccent = ThemeSingleton.get().positiveColor;
|
||||||
|
navigationView.setItemTextColor(new ColorStateList(
|
||||||
|
new int[][]{
|
||||||
|
//{-android.R.attr.state_enabled}, // disabled
|
||||||
|
{android.R.attr.state_checked}, // checked
|
||||||
|
{} // default
|
||||||
|
},
|
||||||
|
new int[]{
|
||||||
|
// 0,
|
||||||
|
colorAccent,
|
||||||
|
Color.argb(222, 0, 0, 0)
|
||||||
|
}
|
||||||
|
));
|
||||||
|
navigationView.setItemIconTintList(new ColorStateList(
|
||||||
|
new int[][]{
|
||||||
|
//{-android.R.attr.state_enabled}, // disabled
|
||||||
|
{android.R.attr.state_checked}, // checked
|
||||||
|
{} // default
|
||||||
|
},
|
||||||
|
new int[]{
|
||||||
|
// 0,
|
||||||
|
colorAccent,
|
||||||
|
Color.argb(138, 0, 0, 0)
|
||||||
|
}
|
||||||
|
));
|
||||||
|
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onNavigationItemSelected(MenuItem menuItem) {
|
||||||
|
drawerLayout.closeDrawers();
|
||||||
|
switch (menuItem.getItemId()) {
|
||||||
|
case R.id.nav_songs:
|
||||||
|
menuItem.setChecked(true);
|
||||||
|
viewPager.setCurrentItem(PagerAdapter.MusicFragments.SONG.ordinal(), true);
|
||||||
|
break;
|
||||||
|
case R.id.nav_albums:
|
||||||
|
menuItem.setChecked(true);
|
||||||
|
viewPager.setCurrentItem(PagerAdapter.MusicFragments.ALBUM.ordinal(), true);
|
||||||
|
break;
|
||||||
|
case R.id.nav_artists:
|
||||||
|
menuItem.setChecked(true);
|
||||||
|
viewPager.setCurrentItem(PagerAdapter.MusicFragments.ARTIST.ordinal(), true);
|
||||||
|
break;
|
||||||
|
case R.id.nav_playlists:
|
||||||
|
menuItem.setChecked(true);
|
||||||
|
viewPager.setCurrentItem(PagerAdapter.MusicFragments.PLAYLIST.ordinal(), true);
|
||||||
|
break;
|
||||||
|
case R.id.nav_settings:
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
|
break;
|
||||||
|
case R.id.nav_about:
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
new AboutDialog().show(getSupportFragmentManager(), "ABOUT_DIALOG");
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpDrawerToggle() {
|
private void setUpDrawerToggle() {
|
||||||
|
|
@ -186,16 +238,8 @@ public class MainActivity extends AbsFabActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpDrawerLayout() {
|
private void setUpDrawerLayout() {
|
||||||
FrameLayout navDrawerFrame = (FrameLayout) findViewById(R.id.nav_drawer_frame);
|
drawerLayout.setStatusBarBackgroundColor(PreferenceUtils.getInstance(this).getThemeColorPrimaryDarker());
|
||||||
int navDrawerMargin = getResources().getDimensionPixelSize(R.dimen.nav_drawer_margin);
|
setUpNavigationView();
|
||||||
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
|
|
||||||
int navDrawerWidthLimit = getResources().getDimensionPixelSize(R.dimen.nav_drawer_width_limit);
|
|
||||||
int navDrawerWidth = displayMetrics.widthPixels - navDrawerMargin;
|
|
||||||
if (navDrawerWidth > navDrawerWidthLimit) {
|
|
||||||
navDrawerWidth = navDrawerWidthLimit;
|
|
||||||
}
|
|
||||||
navDrawerFrame.setLayoutParams(new DrawerLayout.LayoutParams(navDrawerWidth,
|
|
||||||
DrawerLayout.LayoutParams.MATCH_PARENT, Gravity.START));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -210,21 +254,26 @@ public class MainActivity extends AbsFabActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateNavigationDrawerHeader() {
|
private void updateNavigationDrawerHeader() {
|
||||||
if (navigationDrawerFragment != null) {
|
Song song = MusicPlayerRemote.getCurrentSong();
|
||||||
Song song = MusicPlayerRemote.getCurrentSong();
|
if (song.id != -1) {
|
||||||
if (song.id != -1) {
|
if (navigationDrawerHeader == null) {
|
||||||
navigationDrawerFragment.getSongTitle().setText(song.title);
|
navigationDrawerHeader = navigationView.inflateHeaderView(R.layout.navigation_drawer_header);
|
||||||
navigationDrawerFragment.getSongArtist().setText(song.artistName);
|
navigationDrawerHeader.setOnClickListener(this);
|
||||||
ImageLoader.getInstance().displayImage(
|
|
||||||
MusicUtil.getAlbumArtUri(song.albumId).toString(),
|
|
||||||
navigationDrawerFragment.getAlbumArtImageView(),
|
|
||||||
new DisplayImageOptions.Builder()
|
|
||||||
.cacheInMemory(true)
|
|
||||||
.showImageOnFail(R.drawable.default_album_art)
|
|
||||||
.resetViewBeforeLoading(true)
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
((TextView) navigationDrawerHeader.findViewById(R.id.song_title)).setText(song.title);
|
||||||
|
((TextView) navigationDrawerHeader.findViewById(R.id.song_artist)).setText(song.artistName);
|
||||||
|
ImageLoader.getInstance().displayImage(
|
||||||
|
MusicUtil.getAlbumArtUri(song.albumId).toString(),
|
||||||
|
((ImageView) navigationDrawerHeader.findViewById(R.id.album_art)),
|
||||||
|
new DisplayImageOptions.Builder()
|
||||||
|
.cacheInMemory(true)
|
||||||
|
.showImageOnFail(R.drawable.default_album_art)
|
||||||
|
.resetViewBeforeLoading(true)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
navigationView.removeHeaderView(navigationDrawerHeader);
|
||||||
|
navigationDrawerHeader = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,37 +306,6 @@ public class MainActivity extends AbsFabActivity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNavigationDrawerItemSelected(int position) {
|
|
||||||
if (position == NavigationDrawerFragment.NAVIGATION_DRAWER_HEADER) {
|
|
||||||
NavigationUtil.openCurrentPlayingIfPossible(this, getSharedViewsWithFab(new Pair[]{
|
|
||||||
Pair.create(navigationDrawerFragment.getAlbumArtImageView(),
|
|
||||||
getResources().getString(R.string.transition_album_cover)
|
|
||||||
)
|
|
||||||
}));
|
|
||||||
} else if (position == NavigationDrawerFragment.ABOUT_INDEX) {
|
|
||||||
drawerLayout.closeDrawers();
|
|
||||||
new Handler().postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
new AboutDialog().show(getSupportFragmentManager(), "ABOUT_DIALOG");
|
|
||||||
}
|
|
||||||
}, 200);
|
|
||||||
} else if (position == NavigationDrawerFragment.SETTINGS_INDEX) {
|
|
||||||
drawerLayout.closeDrawers();
|
|
||||||
new Handler().postDelayed(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
|
|
||||||
}
|
|
||||||
}, 200);
|
|
||||||
} else {
|
|
||||||
if (viewPager != null) {
|
|
||||||
viewPager.setCurrentItem(position, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
if (isAlbumPage()) {
|
if (isAlbumPage()) {
|
||||||
|
|
@ -355,13 +373,16 @@ public class MainActivity extends AbsFabActivity
|
||||||
setToolBarTransparent((boolean) event.getValue());
|
setToolBarTransparent((boolean) event.getValue());
|
||||||
break;
|
break;
|
||||||
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_OTHER_SCREENS_CHANGED:
|
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_OTHER_SCREENS_CHANGED:
|
||||||
setShouldColorNavBar((boolean) event.getValue());
|
if ((boolean) event.getValue()) setNavigationBarThemeColor();
|
||||||
|
else resetNavigationBarColor();
|
||||||
break;
|
break;
|
||||||
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_CHANGED:
|
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_CHANGED:
|
||||||
try {
|
try {
|
||||||
setShouldColorNavBar(((Set) event.getValue()).contains(PreferenceUtils.COLORED_NAVIGATION_BAR_OTHER_SCREENS));
|
if (((Set) event.getValue()).contains(PreferenceUtils.COLORED_NAVIGATION_BAR_OTHER_SCREENS))
|
||||||
|
setNavigationBarThemeColor();
|
||||||
|
else resetNavigationBarColor();
|
||||||
} catch (NullPointerException ignored) {
|
} catch (NullPointerException ignored) {
|
||||||
setShouldColorNavBar(false);
|
resetNavigationBarColor();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -369,7 +390,7 @@ public class MainActivity extends AbsFabActivity
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if (navigationDrawerFragment.isDrawerOpen()) drawerLayout.closeDrawers();
|
if (drawerLayout.isDrawerOpen(navigationView)) drawerLayout.closeDrawers();
|
||||||
else if (cab != null && cab.isActive()) cab.finish();
|
else if (cab != null && cab.isActive()) cab.finish();
|
||||||
else super.onBackPressed();
|
else super.onBackPressed();
|
||||||
}
|
}
|
||||||
|
|
@ -569,4 +590,15 @@ public class MainActivity extends AbsFabActivity
|
||||||
.start(callback);
|
.start(callback);
|
||||||
return cab;
|
return cab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (v == navigationDrawerHeader) {
|
||||||
|
NavigationUtil.openCurrentPlayingIfPossible(this, getSharedViewsWithFab(new Pair[]{
|
||||||
|
Pair.create(((ImageView) navigationDrawerHeader.findViewById(R.id.album_art)),
|
||||||
|
getResources().getString(R.string.transition_album_cover)
|
||||||
|
)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
import android.animation.Animator;
|
import android.animation.Animator;
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
|
@ -79,7 +78,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
||||||
private boolean opaqueToolBar = PreferenceUtils.getInstance(this).opaqueToolbarNowPlaying();
|
private boolean opaqueToolBar = PreferenceUtils.getInstance(this).opaqueToolbarNowPlaying();
|
||||||
private boolean forceSquareAlbumArt = PreferenceUtils.getInstance(this).forceAlbumArtSquared();
|
private boolean forceSquareAlbumArt = PreferenceUtils.getInstance(this).forceAlbumArtSquared();
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
@ -100,7 +99,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
||||||
getSupportActionBar().setTitle(null);
|
getSupportActionBar().setTitle(null);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
getWindow().getEnterTransition().addListener(new SmallTransitionListener() {
|
getWindow().getEnterTransition().addListener(new SmallTransitionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onTransitionStart(Transition transition) {
|
public void onTransitionStart(Transition transition) {
|
||||||
|
|
@ -130,20 +129,6 @@ public class MusicControllerActivity extends AbsFabActivity {
|
||||||
getFab().setOnLongClickListener(null);
|
getFab().setOnLongClickListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorStatusBar() {
|
|
||||||
return false; // let other code handle this below
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return false; // let other code handle this below
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void moveSeekBarIntoPlace() {
|
private void moveSeekBarIntoPlace() {
|
||||||
// RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) progressSlider.getLayoutParams();
|
// RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) progressSlider.getLayoutParams();
|
||||||
|
|
@ -360,7 +345,7 @@ public class MusicControllerActivity extends AbsFabActivity {
|
||||||
notifyTaskColorChange(defaultBarColor);
|
notifyTaskColorChange(defaultBarColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void animateColorChange(final int newColor) {
|
private void animateColorChange(final int newColor) {
|
||||||
if (lastFooterColor != -1 && lastFooterColor != newColor) {
|
if (lastFooterColor != -1 && lastFooterColor != newColor) {
|
||||||
ViewUtil.animateViewColor(footer, lastFooterColor, newColor, COLOR_TRANSITION_TIME);
|
ViewUtil.animateViewColor(footer, lastFooterColor, newColor, COLOR_TRANSITION_TIME);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities;
|
package com.kabouzeid.gramophone.ui.activities;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.widget.GridLayoutManager;
|
import android.support.v7.widget.GridLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
|
@ -38,7 +36,7 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
|
||||||
private PlaylistSongAdapter adapter;
|
private PlaylistSongAdapter adapter;
|
||||||
private ArrayList<PlaylistSong> songs;
|
private ArrayList<PlaylistSong> songs;
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
@ -79,24 +77,12 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
|
||||||
getSupportActionBar().setTitle(playlist.name);
|
getSupportActionBar().setTitle(playlist.name);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
|
if (PreferenceUtils.getInstance(this).coloredNavigationBarPlaylistEnabled())
|
||||||
|
setNavigationBarThemeColor();
|
||||||
|
|
||||||
App.bus.register(this);
|
App.bus.register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorStatusBar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return PreferenceUtils.getInstance(this).coloredNavigationBarPlaylistEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void getIntentExtras() {
|
private void getIntentExtras() {
|
||||||
Bundle intentExtras = getIntent().getExtras();
|
Bundle intentExtras = getIntent().getExtras();
|
||||||
final int playlistId = intentExtras.getInt(AppKeys.E_PLAYLIST);
|
final int playlistId = intentExtras.getInt(AppKeys.E_PLAYLIST);
|
||||||
|
|
|
||||||
|
|
@ -59,21 +59,9 @@ public class SearchActivity extends AbsBaseActivity {
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
//noinspection ConstantConditions
|
//noinspection ConstantConditions
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
setNavigationBarThemeColor();
|
||||||
protected boolean shouldColorStatusBar() {
|
setStatusBarThemeColor();
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -40,21 +40,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
||||||
|
|
||||||
if (savedInstanceState == null)
|
if (savedInstanceState == null)
|
||||||
getFragmentManager().beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit();
|
getFragmentManager().beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreensEnabled())
|
||||||
protected boolean shouldColorStatusBar() {
|
setNavigationBarThemeColor();
|
||||||
return true;
|
setStatusBarThemeColor();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreensEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -202,13 +191,16 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
||||||
super.onUIPreferenceChangedEvent(event);
|
super.onUIPreferenceChangedEvent(event);
|
||||||
switch (event.getAction()) {
|
switch (event.getAction()) {
|
||||||
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_OTHER_SCREENS_CHANGED:
|
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_OTHER_SCREENS_CHANGED:
|
||||||
setShouldColorNavBar((boolean) event.getValue());
|
if ((boolean) event.getValue()) setNavigationBarThemeColor();
|
||||||
|
else resetNavigationBarColor();
|
||||||
break;
|
break;
|
||||||
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_CHANGED:
|
case UIPreferenceChangedEvent.COLORED_NAVIGATION_BAR_CHANGED:
|
||||||
try {
|
try {
|
||||||
setShouldColorNavBar(((Set) event.getValue()).contains(PreferenceUtils.COLORED_NAVIGATION_BAR_OTHER_SCREENS));
|
if (((Set) event.getValue()).contains(PreferenceUtils.COLORED_NAVIGATION_BAR_OTHER_SCREENS))
|
||||||
|
setNavigationBarThemeColor();
|
||||||
|
else resetNavigationBarColor();
|
||||||
} catch (NullPointerException ignored) {
|
} catch (NullPointerException ignored) {
|
||||||
setShouldColorNavBar(false);
|
resetNavigationBarColor();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities.base;
|
package com.kabouzeid.gramophone.ui.activities.base;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import com.crashlytics.android.Crashlytics;
|
import com.crashlytics.android.Crashlytics;
|
||||||
|
|
@ -65,7 +63,7 @@ public abstract class AbsBaseActivity extends ThemeBaseActivity implements KabVi
|
||||||
return areViewsEnabled;
|
return areViewsEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
protected void onUIPreferenceChangedEvent(UIPreferenceChangedEvent event) {
|
protected void onUIPreferenceChangedEvent(UIPreferenceChangedEvent event) {
|
||||||
switch (event.getAction()) {
|
switch (event.getAction()) {
|
||||||
case UIPreferenceChangedEvent.THEME_CHANGED:
|
case UIPreferenceChangedEvent.THEME_CHANGED:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities.base;
|
package com.kabouzeid.gramophone.ui.activities.base;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
|
@ -9,39 +8,29 @@ import android.support.v7.app.AppCompatActivity;
|
||||||
|
|
||||||
import com.afollestad.materialdialogs.ThemeSingleton;
|
import com.afollestad.materialdialogs.ThemeSingleton;
|
||||||
import com.kabouzeid.gramophone.R;
|
import com.kabouzeid.gramophone.R;
|
||||||
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
|
|
||||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||||
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
import com.kabouzeid.gramophone.util.PreferenceUtils;
|
||||||
import com.kabouzeid.gramophone.util.Util;
|
import com.kabouzeid.gramophone.util.Util;
|
||||||
import com.readystatesoftware.systembartint.SystemBarTintManager;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Aidan Follestad (afollestad), Karim Abou Zeid (kabouzeid)
|
* @author Aidan Follestad (afollestad), Karim Abou Zeid (kabouzeid)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public abstract class ThemeBaseActivity extends AppCompatActivity implements KabViewsDisableAble {
|
public abstract class ThemeBaseActivity extends AppCompatActivity implements KabViewsDisableAble {
|
||||||
private final boolean statusBarTranslucent = shouldSetStatusBarTranslucent();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
setStatusBarTranslucent(statusBarTranslucent);
|
|
||||||
setTheme(PreferenceUtils.getInstance(this).getGeneralTheme());
|
setTheme(PreferenceUtils.getInstance(this).getGeneralTheme());
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setupTheme();
|
setupTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void setupTheme() {
|
|
||||||
// Apply colors to system UI if necessary
|
|
||||||
setShouldColorNavBar(shouldColorNavBar());
|
|
||||||
setShouldColorStatusBar(shouldColorStatusBar());
|
|
||||||
|
|
||||||
// Accent colors in dialogs, and any dynamic views that pull from this singleton
|
private void setupTheme() {
|
||||||
ThemeSingleton.get().positiveColor = PreferenceUtils.getInstance(this).getThemeColorAccent();
|
ThemeSingleton.get().positiveColor = PreferenceUtils.getInstance(this).getThemeColorAccent();
|
||||||
ThemeSingleton.get().negativeColor = ThemeSingleton.get().positiveColor;
|
ThemeSingleton.get().negativeColor = ThemeSingleton.get().positiveColor;
|
||||||
ThemeSingleton.get().neutralColor = ThemeSingleton.get().positiveColor;
|
ThemeSingleton.get().neutralColor = ThemeSingleton.get().positiveColor;
|
||||||
ThemeSingleton.get().widgetColor = ThemeSingleton.get().positiveColor;
|
ThemeSingleton.get().widgetColor = ThemeSingleton.get().positiveColor;
|
||||||
// Dark theme
|
|
||||||
ThemeSingleton.get().darkTheme = PreferenceUtils.getInstance(this).getGeneralTheme() == R.style.Theme_MaterialMusic;
|
ThemeSingleton.get().darkTheme = PreferenceUtils.getInstance(this).getGeneralTheme() == R.style.Theme_MaterialMusic;
|
||||||
|
|
||||||
if (!overridesTaskColor()) {
|
if (!overridesTaskColor()) {
|
||||||
|
|
@ -60,61 +49,38 @@ public abstract class ThemeBaseActivity extends AppCompatActivity implements Kab
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setStatusBarTranslucent(boolean statusBarTranslucent) {
|
protected void setStatusBarTranslucent(boolean statusBarTranslucent) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
|
||||||
Util.setStatusBarTranslucent(getWindow(), statusBarTranslucent);
|
Util.setStatusBarTranslucent(getWindow(), statusBarTranslucent);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
protected final void setNavigationBarColor(int color) {
|
protected final void setNavigationBarColor(int color) {
|
||||||
if (Util.isAtLeastLollipop())
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
getWindow().setNavigationBarColor(ColorChooserDialog.shiftColorDown(color));
|
getWindow().setNavigationBarColor(color);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
protected final void setStatusBarColor(int color) {
|
protected final void setStatusBarColor(int color) {
|
||||||
if (!statusBarTranslucent && Util.isAtLeastLollipop()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
getWindow().setStatusBarColor(color);
|
getWindow().setStatusBarColor(color);
|
||||||
} else {
|
|
||||||
SystemBarTintManager tintManager = new SystemBarTintManager(this);
|
|
||||||
tintManager.setStatusBarTintEnabled(true);
|
|
||||||
tintManager.setStatusBarTintColor(color);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
protected final void setNavigationBarThemeColor() {
|
||||||
protected final void setShouldColorNavBar(boolean shouldColorNavBar) {
|
setNavigationBarColor(PreferenceUtils.getInstance(this).getThemeColorPrimaryDarker());
|
||||||
if (Util.isAtLeastLollipop()) {
|
|
||||||
if (shouldColorNavBar) {
|
|
||||||
setNavigationBarColor(PreferenceUtils.getInstance(this).getThemeColorPrimary());
|
|
||||||
} else {
|
|
||||||
getWindow().setNavigationBarColor(Util.resolveColor(this, android.R.attr.navigationBarColor));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
protected final void setStatusBarThemeColor() {
|
||||||
protected final void setShouldColorStatusBar(boolean shouldColorStatusBar) {
|
setStatusBarColor(PreferenceUtils.getInstance(this).getThemeColorPrimaryDarker());
|
||||||
if (shouldColorStatusBar) {
|
|
||||||
final int primary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
|
||||||
setStatusBarColor(primary);
|
|
||||||
} else {
|
|
||||||
if (Util.isAtLeastLollipop()) {
|
|
||||||
getWindow().setStatusBarColor(Util.resolveColor(this, android.R.attr.statusBarColor));
|
|
||||||
} else {
|
|
||||||
SystemBarTintManager tintManager = new SystemBarTintManager(this);
|
|
||||||
tintManager.setStatusBarTintEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract boolean shouldColorStatusBar();
|
protected final void resetNavigationBarColor() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
setNavigationBarColor(Util.resolveColor(this, android.R.attr.navigationBarColor));
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract boolean shouldColorNavBar();
|
protected final void resetStatusBarColor() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
|
||||||
protected abstract boolean shouldSetStatusBarTranslucent();
|
setStatusBarColor(Util.resolveColor(this, android.R.attr.statusBarColor));
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean overridesTaskColor() {
|
protected boolean overridesTaskColor() {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.kabouzeid.gramophone.ui.activities.tageditor;
|
package com.kabouzeid.gramophone.ui.activities.tageditor;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
|
|
@ -113,21 +112,6 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorStatusBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldColorNavBar() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldSetStatusBarTranslucent() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initViews() {
|
private void initViews() {
|
||||||
fab = (FloatingActionButton) findViewById(R.id.fab);
|
fab = (FloatingActionButton) findViewById(R.id.fab);
|
||||||
scrollView = (ObservableScrollView) findViewById(R.id.observableScrollView);
|
scrollView = (ObservableScrollView) findViewById(R.id.observableScrollView);
|
||||||
|
|
@ -213,7 +197,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
||||||
|
|
||||||
protected abstract void save();
|
protected abstract void save();
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private void resetColors() {
|
private void resetColors() {
|
||||||
final int primaryColor = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
final int primaryColor = PreferenceUtils.getInstance(this).getThemeColorPrimary();
|
||||||
paletteColorPrimary = primaryColor;
|
paletteColorPrimary = primaryColor;
|
||||||
|
|
@ -257,7 +241,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
protected void setNoImageMode() {
|
protected void setNoImageMode() {
|
||||||
isInNoImageMode = true;
|
isInNoImageMode = true;
|
||||||
image.setVisibility(View.GONE);
|
image.setVisibility(View.GONE);
|
||||||
|
|
@ -306,7 +290,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
||||||
private void applyPalette(final Bitmap bitmap) {
|
private void applyPalette(final Bitmap bitmap) {
|
||||||
Palette.from(bitmap)
|
Palette.from(bitmap)
|
||||||
.generate(new Palette.PaletteAsyncListener() {
|
.generate(new Palette.PaletteAsyncListener() {
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
@Override
|
@Override
|
||||||
public void onGenerated(Palette palette) {
|
public void onGenerated(Palette palette) {
|
||||||
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
final Palette.Swatch vibrantSwatch = palette.getVibrantSwatch();
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import android.view.Gravity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
|
@ -36,7 +35,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||||
private DrawerLayout drawerLayout;
|
private DrawerLayout drawerLayout;
|
||||||
private RecyclerView drawerRecyclerView;
|
private RecyclerView drawerRecyclerView;
|
||||||
|
|
||||||
private Button headerButton;
|
private View headerButton;
|
||||||
private ImageView albumArt;
|
private ImageView albumArt;
|
||||||
private TextView songTitle;
|
private TextView songTitle;
|
||||||
private TextView songArtist;
|
private TextView songArtist;
|
||||||
|
|
@ -98,7 +97,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
return inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
|
return inflater.inflate(R.layout.navigation_drawer_header, container, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -110,12 +109,12 @@ public class NavigationDrawerFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initViews() {
|
private void initViews() {
|
||||||
drawerRecyclerView = (RecyclerView) fragmentRootView.findViewById(R.id.navigation_drawer_list);
|
// drawerRecyclerView = (RecyclerView) fragmentRootView.findViewById(R.id.navigation_drawer_list);
|
||||||
final View drawerHeader = fragmentRootView.findViewById(R.id.header);
|
// final View drawerHeader = fragmentRootView.findViewById(R.id.header);
|
||||||
headerButton = (Button) drawerHeader.findViewById(R.id.header_clickable);
|
// headerButton = (View) drawerHeader.findViewById(R.id.header_clickable);
|
||||||
albumArt = (ImageView) drawerHeader.findViewById(R.id.album_art);
|
// albumArt = (ImageView) drawerHeader.findViewById(R.id.album_art);
|
||||||
songTitle = (TextView) drawerHeader.findViewById(R.id.song_title);
|
// songTitle = (TextView) drawerHeader.findViewById(R.id.song_title);
|
||||||
songArtist = (TextView) drawerHeader.findViewById(R.id.song_artist);
|
// songArtist = (TextView) drawerHeader.findViewById(R.id.song_artist);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpViews() {
|
private void setUpViews() {
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ public abstract class AbsMainActivityFragment extends Fragment implements KabVie
|
||||||
|
|
||||||
protected int getTopPadding() {
|
protected int getTopPadding() {
|
||||||
return Util.getActionBarSize(getActivity()) +
|
return Util.getActionBarSize(getActivity()) +
|
||||||
Util.getStatusBarHeight(getActivity()) +
|
|
||||||
getResources().getDimensionPixelSize(R.dimen.tab_height) +
|
getResources().getDimensionPixelSize(R.dimen.tab_height) +
|
||||||
getResources().getDimensionPixelSize(R.dimen.list_padding_vertical);
|
getResources().getDimensionPixelSize(R.dimen.list_padding_vertical);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<android.support.v4.widget.DrawerLayout
|
<android.support.v4.widget.DrawerLayout
|
||||||
|
android:fitsSystemWindows="true"
|
||||||
android:id="@+id/drawer_layout"
|
android:id="@+id/drawer_layout"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
|
@ -24,11 +25,6 @@
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:ignore="UnusedAttribute">
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/status_bar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/status_bar_padding" />
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
@ -79,21 +75,12 @@
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<FrameLayout
|
<android.support.design.widget.NavigationView
|
||||||
android:id="@+id/nav_drawer_frame"
|
android:id="@+id/nav_view"
|
||||||
android:layout_width="1dp"
|
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
android:layout_gravity="start"
|
android:layout_gravity="start"
|
||||||
android:clickable="true">
|
android:fitsSystemWindows="true"
|
||||||
|
app:menu="@menu/menu_drawer" />
|
||||||
<fragment
|
|
||||||
android:id="@+id/navigation_drawer"
|
|
||||||
android:name="com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:tag="NAV_DRAWER"
|
|
||||||
tools:layout="@layout/fragment_navigation_drawer" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
</android.support.v4.widget.DrawerLayout>
|
</android.support.v4.widget.DrawerLayout>
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/navigation_drawer_background_color"
|
|
||||||
android:clickable="true"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/header"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/navigation_drawer_image_height"
|
|
||||||
android:background="?selectableItemBackground"
|
|
||||||
android:clickable="true">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:transitionName="@string/transition_album_cover"
|
|
||||||
android:id="@+id/album_art"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/navigation_drawer_image_height"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
android:src="@drawable/default_album_art"
|
|
||||||
tools:ignore="ContentDescription,UnusedAttribute" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:background="@drawable/shadow_up" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/song_title"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="16dp"
|
|
||||||
android:layout_marginRight="16dp"
|
|
||||||
android:fontFamily="sans-serif-medium"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="14sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/song_artist"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginLeft="16dp"
|
|
||||||
android:layout_marginRight="16dp"
|
|
||||||
android:fontFamily="sans-serif"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:text="@string/nothing_playing"
|
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
|
||||||
android:textColor="@android:color/white"
|
|
||||||
android:textSize="14sp" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/header_clickable"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?selectableItemBackground"
|
|
||||||
android:clickable="true"
|
|
||||||
android:soundEffectsEnabled="true" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
|
||||||
android:id="@+id/navigation_drawer_list"
|
|
||||||
android:scrollbars="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:paddingBottom="8dp"
|
|
||||||
android:clipToPadding="false" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
60
app/src/main/res/layout/navigation_drawer_header.xml
Normal file
60
app/src/main/res/layout/navigation_drawer_header.xml
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/header"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/navigation_drawer_header_height"
|
||||||
|
android:clickable="true"
|
||||||
|
android:foreground="?rect_selector">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/album_art"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:scaleType="centerCrop"
|
||||||
|
android:src="@drawable/default_album_art"
|
||||||
|
android:transitionName="@string/transition_album_cover"
|
||||||
|
tools:ignore="UnusedAttribute" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:background="@drawable/shadow_up" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/song_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="16dp"
|
||||||
|
android:layout_marginRight="16dp"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/song_artist"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="16dp"
|
||||||
|
android:layout_marginRight="16dp"
|
||||||
|
android:fontFamily="sans-serif"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="@string/nothing_playing"
|
||||||
|
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:textSize="14sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
36
app/src/main/res/menu/menu_drawer.xml
Normal file
36
app/src/main/res/menu/menu_drawer.xml
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<group android:checkableBehavior="single">
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_songs"
|
||||||
|
android:icon="@drawable/ic_audiotrack_white_24dp"
|
||||||
|
android:title="@string/songs" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_albums"
|
||||||
|
android:icon="@drawable/ic_album_white_24dp"
|
||||||
|
android:title="@string/albums" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_artists"
|
||||||
|
android:icon="@drawable/ic_person_white_24dp"
|
||||||
|
android:title="@string/artists" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_playlists"
|
||||||
|
android:icon="@drawable/ic_queue_music_white_24dp"
|
||||||
|
android:title="@string/playlists" />
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<item android:title="@string/other">
|
||||||
|
<menu>
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_settings"
|
||||||
|
android:icon="@drawable/ic_settings_white_24dp"
|
||||||
|
android:title="@string/action_settings" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_about"
|
||||||
|
android:icon="@drawable/ic_help_white_24dp"
|
||||||
|
android:title="@string/action_about" />
|
||||||
|
</menu>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</menu>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="navigation_drawer_image_height">189dp</dimen>
|
<dimen name="navigation_drawer_header_height">189dp</dimen>
|
||||||
<dimen name="navigation_drawer_width">304dp</dimen>
|
<dimen name="navigation_drawer_width">304dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="status_bar_padding">25dp</dimen>
|
<dimen name="status_bar_padding">25dp</dimen>
|
||||||
<dimen name="navigation_drawer_image_height">165dp</dimen>
|
<dimen name="navigation_drawer_header_height">165dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="status_bar_padding">25dp</dimen>
|
<dimen name="status_bar_padding">25dp</dimen>
|
||||||
<dimen name="navigation_drawer_image_height">165dp</dimen>
|
<dimen name="navigation_drawer_header_height">165dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
<item name="rect_selector">@drawable/rect_ripple_selector_dark</item>
|
<item name="rect_selector">@drawable/rect_ripple_selector_dark</item>
|
||||||
|
|
||||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.MaterialMusic.Light" parent="Theme.MaterialMusic.Base.Light">
|
<style name="Theme.MaterialMusic.Light" parent="Theme.MaterialMusic.Base.Light">
|
||||||
|
|
@ -12,6 +13,7 @@
|
||||||
<item name="rect_selector">@drawable/rect_ripple_selector</item>
|
<item name="rect_selector">@drawable/rect_ripple_selector</item>
|
||||||
|
|
||||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.MaterialMusic.Notification" parent="@android:style/TextAppearance.Material.Notification" />
|
<style name="Theme.MaterialMusic.Notification" parent="@android:style/TextAppearance.Material.Notification" />
|
||||||
|
|
@ -19,6 +21,7 @@
|
||||||
<style name="Theme.MaterialMusic.Notification.Title" parent="@android:style/TextAppearance.Material.Notification.Title" />
|
<style name="Theme.MaterialMusic.Notification.Title" parent="@android:style/TextAppearance.Material.Notification.Title" />
|
||||||
|
|
||||||
<style name="PlayPauseFab" parent="PlayPauseFabParent">
|
<style name="PlayPauseFab" parent="PlayPauseFabParent">
|
||||||
|
<item name="borderWidth">0dp</item>
|
||||||
<item name="android:transitionName">@string/transition_fab</item>
|
<item name="android:transitionName">@string/transition_fab</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<!-- Per the design guidelines, navigation drawers should be between 240dp and 320dp:
|
<!-- Per the design guidelines, navigation drawers should be between 240dp and 320dp:
|
||||||
https://developer.android.com/design/patterns/navigation-drawer.html -->
|
https://developer.android.com/design/patterns/navigation-drawer.html -->
|
||||||
<dimen name="navigation_drawer_image_height">140dp</dimen>
|
<dimen name="navigation_drawer_header_height">140dp</dimen>
|
||||||
<dimen name="nav_drawer_width_limit">320dp</dimen>
|
<dimen name="nav_drawer_width_limit">320dp</dimen>
|
||||||
<dimen name="nav_drawer_margin">56dp</dimen>
|
<dimen name="nav_drawer_margin">56dp</dimen>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,7 @@
|
||||||
<string name="failed_download_albumart">Unable to download the art for this album.</string>
|
<string name="failed_download_albumart">Unable to download the art for this album.</string>
|
||||||
<string name="search_hint">Search your library…</string>
|
<string name="search_hint">Search your library…</string>
|
||||||
<string name="rescanning_media">Rescanning media…</string>
|
<string name="rescanning_media">Rescanning media…</string>
|
||||||
|
<string name="other">Other</string>
|
||||||
|
|
||||||
<string-array name="update_album_cover_options">
|
<string-array name="update_album_cover_options">
|
||||||
<item>Download from Last.fm</item>
|
<item>Download from Last.fm</item>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ buildscript {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:1.2.3'
|
classpath 'com.android.tools.build:gradle:1.3.0-beta1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue