improved navbar coloring and fixed some warnings
This commit is contained in:
parent
f8cfdc4706
commit
1f32f46bf0
5 changed files with 59 additions and 18 deletions
|
|
@ -3,10 +3,12 @@ package com.dkanada.gramophone.ui.activities.base;
|
|||
import android.animation.ArgbEvaluator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.FloatRange;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -25,6 +27,7 @@ import com.dkanada.gramophone.ui.fragments.player.card.CardPlayerFragment;
|
|||
import com.dkanada.gramophone.ui.fragments.player.flat.FlatPlayerFragment;
|
||||
import com.dkanada.gramophone.util.PreferenceUtil;
|
||||
import com.dkanada.gramophone.util.ViewUtil;
|
||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
|
||||
|
||||
public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, CardPlayerFragment.Callbacks {
|
||||
|
|
@ -141,7 +144,15 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
public void onPanelSlide(View panel, @FloatRange(from = 0, to = 1) float slideOffset) {
|
||||
setMiniPlayerAlphaProgress(slideOffset);
|
||||
if (navigationBarColorAnimator != null) navigationBarColorAnimator.cancel();
|
||||
super.setNavigationbarColor((int) argbEvaluator.evaluate(slideOffset, navigationbarColor, playerFragment.getPaletteColor()));
|
||||
int color = shiftNavbarColor(playerFragment.getPaletteColor());
|
||||
|
||||
if (ThemeStore.coloredNavigationBar(this)) {
|
||||
int navbarColor = ColorUtils.blendARGB(navigationbarColor, color, slideOffset);
|
||||
super.setNavigationbarColor(navbarColor);
|
||||
} else {
|
||||
int navbarColor = ColorUtils.blendARGB(Color.TRANSPARENT, color, slideOffset);
|
||||
super.setNavigationbarColor(navbarColor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -176,7 +187,8 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
int playerFragmentColor = playerFragment.getPaletteColor();
|
||||
super.setLightStatusbar(false);
|
||||
super.setTaskDescriptionColor(playerFragmentColor);
|
||||
super.setNavigationbarColor(playerFragmentColor);
|
||||
int color = shiftNavbarColor(playerFragmentColor);
|
||||
super.setNavigationbarColor(color);
|
||||
|
||||
playerFragment.setMenuVisibility(true);
|
||||
playerFragment.setUserVisibleHint(true);
|
||||
|
|
@ -243,7 +255,8 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
if (getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
int playerFragmentColor = playerFragment.getPaletteColor();
|
||||
super.setTaskDescriptionColor(playerFragmentColor);
|
||||
animateNavigationBarColor(playerFragmentColor);
|
||||
int color = shiftNavbarColor(playerFragmentColor);
|
||||
animateNavigationBarColor(color);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -295,4 +308,28 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
protected View getSnackBarContainer() {
|
||||
return findViewById(R.id.content_container);
|
||||
}
|
||||
|
||||
/**
|
||||
* To improve contrast with the navbar controls
|
||||
*/
|
||||
private int shiftNavbarColor(int color) {
|
||||
double luminance = ColorUtils.calculateLuminance(color);
|
||||
|
||||
if (luminance > 0.7 || luminance < 0.3) {
|
||||
// The color is really dark or really light, the navbar is just fine
|
||||
return color;
|
||||
} else if (luminance > 0.5) {
|
||||
// The color is a bit lighter than the center, let's make it a bit lighter, so it's easier to see
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
hsv[2] *= 1.3f;
|
||||
return Color.HSVToColor(hsv);
|
||||
} else {
|
||||
// The color is a bit darker than the center, let's make it a bit darker, so it's easier to see
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(color, hsv);
|
||||
hsv[2] *= 0.7f;
|
||||
return Color.HSVToColor(hsv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,15 +69,15 @@ public abstract class AbsThemeActivity extends ATHToolbarActivity {
|
|||
}
|
||||
|
||||
public void setNavigationbarColor(int color) {
|
||||
if (ThemeStore.coloredNavigationBar(this)) {
|
||||
ATH.setNavigationbarColor(this, color);
|
||||
} else {
|
||||
ATH.setNavigationbarColor(this, Color.BLACK);
|
||||
}
|
||||
ATH.setNavigationbarColor(this, color);
|
||||
}
|
||||
|
||||
public void setNavigationbarColorAuto() {
|
||||
setNavigationbarColor(ThemeStore.navigationBarColor(this));
|
||||
if (ThemeStore.coloredNavigationBar(this)) {
|
||||
setNavigationbarColor(ThemeStore.navigationBarColor(this));
|
||||
} else {
|
||||
setNavigationbarColor(Color.TRANSPARENT);
|
||||
}
|
||||
}
|
||||
|
||||
public void setLightStatusbar(boolean enabled) {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import com.h6ah4i.android.widget.advrecyclerview.animator.GeneralItemAnimator;
|
|||
import com.h6ah4i.android.widget.advrecyclerview.animator.RefactoredDefaultItemAnimator;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
|
||||
import com.kabouzeid.appthemehelper.ATH;
|
||||
import com.kabouzeid.appthemehelper.ThemeStore;
|
||||
import com.kabouzeid.appthemehelper.util.ATHUtil;
|
||||
import com.kabouzeid.appthemehelper.util.ColorUtil;
|
||||
|
|
@ -176,7 +177,6 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
private void updateCurrentSong() {
|
||||
impl.updateCurrentSong(MusicPlayerRemote.getCurrentSong());
|
||||
}
|
||||
|
|
@ -243,7 +243,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
@Override
|
||||
protected void toggleFavorite(Song song) {
|
||||
super.toggleFavorite(song);
|
||||
if (song.id == MusicPlayerRemote.getCurrentSong().id) {
|
||||
if (song.id.equals(MusicPlayerRemote.getCurrentSong().id)) {
|
||||
if (song.favorite) {
|
||||
playerAlbumCoverFragment.showHeartAnimation();
|
||||
}
|
||||
|
|
@ -261,6 +261,9 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
public void onHide() {
|
||||
playbackControlsFragment.hide();
|
||||
onBackPressed();
|
||||
if (!ThemeStore.coloredNavigationBar(requireContext())) {
|
||||
ATH.setNavigationbarColor(requireActivity(), Color.TRANSPARENT);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -69,19 +69,19 @@
|
|||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_marginTop="24dp"
|
||||
android:id="@+id/player_panel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/playing_queue_card"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="-8dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:cardBackgroundColor="?cardBackgroundColor"
|
||||
app:cardElevation="@dimen/card_elevation"
|
||||
app:cardUseCompatPadding="false">
|
||||
|
|
@ -95,8 +95,8 @@
|
|||
android:id="@+id/draggable_area"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@+id/card_content"
|
||||
android:layout_alignTop="@+id/card_content"
|
||||
android:layout_alignBottom="@+id/card_content"
|
||||
android:layout_marginTop="48dp" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
|||
|
|
@ -1,18 +1,20 @@
|
|||
<resources>
|
||||
|
||||
<style name="Theme.Phonograph" parent="Theme.Phonograph.Base">
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowSharedElementsUseOverlay">false</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Phonograph.Light" parent="Theme.Phonograph.Base.Light">
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowSharedElementsUseOverlay">false</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Phonograph.Black" parent="Theme.Phonograph.Base.Black">
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowSharedElementsUseOverlay">false</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Phonograph.Notification" parent="@android:style/TextAppearance.Material.Notification" />
|
||||
|
|
@ -26,5 +28,4 @@
|
|||
<style name="MusicProgressSlider" parent="MusicProgressSliderParent">
|
||||
<item name="android:padding">0dp</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
Loading…
Add table
Add a link
Reference in a new issue