diff --git a/app/build.gradle b/app/build.gradle
index 7afa026f..eadaf138 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -71,4 +71,5 @@ dependencies {
compile 'com.jpardogo.materialtabstrip:library:1.0.9'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.koushikdutta.ion:ion:2.1.3'
+ compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java
index 30b77327..4cc159e2 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java
@@ -22,6 +22,7 @@ import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.songadapter.AlbumSongAdapter;
import com.kabouzeid.gramophone.comparator.SongTrackNumberComparator;
+import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.interfaces.PaletteColorHolder;
import com.kabouzeid.gramophone.loader.AlbumLoader;
@@ -56,7 +57,6 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
private Album album;
private ObservableRecyclerView recyclerView;
- private View statusBar;
private ImageView albumArtImageView;
private View songsBackgroundView;
private TextView albumTitleView;
@@ -82,7 +82,10 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
// Change alpha of overlay
float alpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
ViewUtil.setBackgroundAlpha(toolbar, alpha, toolbarColor);
- ViewUtil.setBackgroundAlpha(statusBar, alpha, toolbarColor);
+ // Status bar color is a darker shade of the toolbar color with equal opacity
+ int a = Math.min(255, Math.max(0, (int) (alpha * 255))) << 24;
+ int rgb = 0x00ffffff & ColorChooserDialog.shiftColorDown(toolbarColor);
+ setStatusBarColor(a + rgb, true);
// Translate name text
int maxTitleTranslationY = albumArtViewHeight;
@@ -154,7 +157,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.statusBar);
+// statusBar = findViewById(R.id.statusBar);
}
private void setUpObservableListViewParams() {
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java
index a535a5ea..1573438e 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java
@@ -28,6 +28,7 @@ import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.ArtistAlbumAdapter;
import com.kabouzeid.gramophone.adapter.songadapter.ArtistSongAdapter;
+import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.interfaces.PaletteColorHolder;
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistBiographyLoader;
@@ -65,7 +66,6 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
private Artist artist;
private ObservableListView songListView;
- private View statusBar;
private ImageView artistImage;
private View songsBackgroundView;
private TextView artistNameTv;
@@ -95,7 +95,10 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
// Change alpha of overlay
float alpha = Math.max(0, Math.min(1, (float) scrollY / flexibleRange));
ViewUtil.setBackgroundAlpha(toolbar, alpha, toolbarColor);
- ViewUtil.setBackgroundAlpha(statusBar, alpha, toolbarColor);
+ // Status bar color is a darker shade of the toolbar color with equal opacity
+ int a = Math.min(255, Math.max(0, (int) (alpha * 255))) << 24;
+ int rgb = 0x00ffffff & ColorChooserDialog.shiftColorDown(toolbarColor);
+ setStatusBarColor(a + rgb, true);
// Translate name text
int maxTitleTranslationY = artistImageViewHeight;
@@ -160,7 +163,7 @@ 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.statusBar);
+// statusBar = findViewById(R.id.statusBar);
songListHeader = LayoutInflater.from(this).inflate(R.layout.artist_detail_header, songListView, false);
albumRecyclerView = (RecyclerView) songListHeader.findViewById(R.id.recycler_view);
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java
index dacbb200..5938db51 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java
@@ -94,6 +94,11 @@ public class MusicControllerActivity extends AbsFabActivity {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
+ @Override
+ protected boolean translucentStatusBarOnLollipop() {
+ return true;
+ }
+
@Override
protected boolean shouldColorStatusBar() {
return false; // let other code handle this below
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/ThemeBaseActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/ThemeBaseActivity.java
index 4c165975..4d2360d1 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/ThemeBaseActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/ThemeBaseActivity.java
@@ -12,6 +12,7 @@ import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
import com.kabouzeid.gramophone.util.PreferenceUtils;
import com.kabouzeid.gramophone.util.Util;
+import com.readystatesoftware.systembartint.SystemBarTintManager;
/**
* @author Aidan Follestad (afollestad)
@@ -34,12 +35,12 @@ public abstract class ThemeBaseActivity extends ActionBarActivity implements Kab
// Apply colors to system UI if necessary
final int primaryDark = PreferenceUtils.getInstance(this).getThemeColorPrimaryDarker();
if (Util.hasLollipopSDK()) {
- if (shouldColorStatusBar())
- getWindow().setStatusBarColor(primaryDark);
if (shouldColorNavBar())
getWindow().setNavigationBarColor(primaryDark);
}
+ setStatusBarColor(primaryDark, false);
+
// Persist current values so the Activity knows if they change
// mLastDarkTheme = PreferenceUtils.getInstance(this).getGeneralTheme() == 1;
// mLastPrimary = PreferenceUtils.getInstance(this).getThemeColorPrimary();
@@ -94,4 +95,14 @@ public abstract class ThemeBaseActivity extends ActionBarActivity implements Kab
protected abstract boolean shouldColorStatusBar();
protected abstract boolean shouldColorNavBar();
+
+ protected final void setStatusBarColor(int color, boolean forceSystemBarTint) {
+ if (!forceSystemBarTint && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ getWindow().setStatusBarColor(color);
+ } else {
+ SystemBarTintManager tintManager = new SystemBarTintManager(this);
+ tintManager.setStatusBarTintEnabled(true);
+ tintManager.setStatusBarTintColor(color);
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java
index f966aecb..3e2c577b 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java
@@ -203,10 +203,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
final int vibrantColor = DialogUtils.resolveColor(this, R.attr.colorPrimary);
paletteColorPrimary = vibrantColor;
observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- getWindow().setStatusBarColor(ColorChooserDialog.shiftColorDown(vibrantColor));
+ setStatusBarColor(ColorChooserDialog.shiftColorDown(vibrantColor), false);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
getWindow().setNavigationBarColor(vibrantColor);
- }
}
private void getIntentExtras() {
@@ -254,11 +253,11 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
PreferenceUtils.getInstance(this).getThemeColorPrimary());
toolBar.setBackgroundColor(primary);
header.setBackgroundColor(primary);
- if (Util.hasLollipopSDK()) {
- int primaryDark = ColorChooserDialog.shiftColorDown(primary);
- getWindow().setStatusBarColor(primaryDark);
+
+ int primaryDark = ColorChooserDialog.shiftColorDown(primary);
+ setStatusBarColor(primaryDark, false);
+ if (Util.hasLollipopSDK())
getWindow().setNavigationBarColor(primaryDark);
- }
}
protected void dataChanged() {
@@ -295,10 +294,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
final int vibrantColor = palette.getVibrantColor(DialogUtils.resolveColor(AbsTagEditorActivity.this, R.attr.default_bar_color));
paletteColorPrimary = vibrantColor;
observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- getWindow().setStatusBarColor(ColorChooserDialog.shiftColorDown(vibrantColor));
+ setStatusBarColor(ColorChooserDialog.shiftColorDown(vibrantColor), false);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
getWindow().setNavigationBarColor(vibrantColor);
- }
}
});
} else {
diff --git a/app/src/main/res/layout/activity_album_detail.xml b/app/src/main/res/layout/activity_album_detail.xml
index 8039b31a..379c00c0 100644
--- a/app/src/main/res/layout/activity_album_detail.xml
+++ b/app/src/main/res/layout/activity_album_detail.xml
@@ -30,9 +30,7 @@
+ android:orientation="vertical">
-
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_artist_detail.xml b/app/src/main/res/layout/activity_artist_detail.xml
index a6afa08e..b251dd38 100644
--- a/app/src/main/res/layout/activity_artist_detail.xml
+++ b/app/src/main/res/layout/activity_artist_detail.xml
@@ -60,16 +60,17 @@
android:layout_height="wrap_content"
android:orientation="vertical">
-
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_music_controller.xml b/app/src/main/res/layout/activity_music_controller.xml
index fa5df2ab..2619b141 100644
--- a/app/src/main/res/layout/activity_music_controller.xml
+++ b/app/src/main/res/layout/activity_music_controller.xml
@@ -201,6 +201,7 @@