replace some infrequently used methods from theme library

This commit is contained in:
dkanada 2021-06-13 00:36:58 +09:00
commit 5ae5d3017a
9 changed files with 76 additions and 53 deletions

View file

@ -17,9 +17,8 @@ import androidx.drawerlayout.widget.DrawerLayout;
import com.dkanada.gramophone.activities.base.AbsMusicContentActivity;
import com.dkanada.gramophone.util.NavigationUtil;
import com.dkanada.gramophone.util.PreferenceUtil;
import com.dkanada.gramophone.util.ThemeUtil;
import com.kabouzeid.appthemehelper.ThemeStore;
import com.kabouzeid.appthemehelper.util.ATHUtil;
import com.kabouzeid.appthemehelper.util.NavigationViewUtil;
import com.dkanada.gramophone.databinding.ActivityMainContentBinding;
import com.dkanada.gramophone.databinding.ActivityMainDrawerLayoutBinding;
import com.dkanada.gramophone.databinding.NavigationDrawerHeaderBinding;
@ -133,9 +132,11 @@ public class MainActivity extends AbsMusicContentActivity {
}
private void setUpNavigationView() {
int accentColor = PreferenceUtil.getInstance(this).getAccentColor();
NavigationViewUtil.setItemIconColors(binding.navigationView, ATHUtil.resolveColor(this, R.attr.iconColor, ThemeStore.textColorSecondary(this)), accentColor);
NavigationViewUtil.setItemTextColors(binding.navigationView, ThemeStore.textColorPrimary(this), accentColor);
int normalColor = ThemeStore.textColorPrimary(this);
int activeColor = PreferenceUtil.getInstance(this).getAccentColor();
binding.navigationView.setItemIconTintList(ThemeUtil.getColorStateList(normalColor, activeColor));
binding.navigationView.setItemTextColor(ThemeUtil.getColorStateList(normalColor, activeColor));
binding.navigationView.setNavigationItemSelectedListener(menuItem -> {
binding.drawerLayout.closeDrawers();
@ -157,6 +158,7 @@ public class MainActivity extends AbsMusicContentActivity {
// only run the following code when a new library has been selected
if (menuItem.getItemId() == QueryUtil.currentLibrary.getId().hashCode()) return true;
for (BaseItemDto itemDto : libraries) {
if (menuItem.getItemId() == itemDto.getId().hashCode()) {
QueryUtil.currentLibrary = itemDto;
@ -168,12 +170,13 @@ public class MainActivity extends AbsMusicContentActivity {
// setCheckable must be applied to the items on creation
// it also applies a tacky background color for the checked item
// this is a hack to check the current item without that
if (menuItem.getItemId() == R.id.nav_settings
|| menuItem.getItemId() == R.id.nav_about
|| menuItem.getItemId() == R.id.nav_logout) return true;
if (menuItem.getGroupId() != R.id.navigation_drawer_menu_category_sections) return true;
for (int i = 0; i < binding.navigationView.getMenu().size(); i++) {
binding.navigationView.getMenu().getItem(i).setChecked(binding.navigationView.getMenu().getItem(i) == menuItem);
MenuItem item = binding.navigationView.getMenu().getItem(i);
// ignore items that open new activities since the navigation view is hidden
item.setChecked(item == menuItem);
}
return true;

View file

@ -8,7 +8,6 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.PathInterpolator;
import androidx.annotation.ColorInt;
import androidx.annotation.FloatRange;
import androidx.annotation.RequiresApi;
import androidx.core.graphics.ColorUtils;
@ -29,9 +28,9 @@ import com.sothree.slidinguppanel.SlidingUpPanelLayout;
public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity implements SlidingUpPanelLayout.PanelSlideListener, CardPlayerFragment.Callbacks {
private SlidingMusicPanelLayoutBinding binding;
private int navigationbarColor;
private int taskColor;
private boolean lightStatusbar;
private int navigationBarColor;
private int taskDescriptionColor;
private boolean lightStatusBar;
private NowPlayingScreen currentNowPlayingScreen;
private AbsPlayerFragment playerFragment;
@ -87,6 +86,11 @@ public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity impl
});
binding.slidingLayout.addPanelSlideListener(this);
// TODO remove this once createContentView works with inheritance
// any AbsMusicPanelActivity child without setColor has status bar issues
// setDrawUnderStatusBar only works after content view has been set
setColor(PreferenceUtil.getInstance(this).getPrimaryColor());
}
@Override
@ -130,7 +134,7 @@ public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity impl
public void onPanelSlide(View panel, @FloatRange(from = 0, to = 1) float slideOffset) {
setMiniPlayerAlphaProgress(slideOffset);
if (navigationBarColorAnimator != null) navigationBarColorAnimator.cancel();
super.setNavigationBarColor(ColorUtils.blendARGB(navigationbarColor, playerFragment.getPaletteColor(), slideOffset));
super.setNavigationBarColor(ColorUtils.blendARGB(navigationBarColor, playerFragment.getPaletteColor(), slideOffset));
}
@Override
@ -150,9 +154,9 @@ public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity impl
}
public void onPanelCollapsed(View panel) {
super.setLightStatusBar(lightStatusbar);
super.setTaskDescriptionColor(taskColor);
super.setNavigationBarColor(navigationbarColor);
super.setLightStatusBar(lightStatusBar);
super.setTaskDescriptionColor(taskDescriptionColor);
super.setNavigationBarColor(navigationBarColor);
playerFragment.setMenuVisibility(false);
playerFragment.setUserVisibleHint(false);
@ -240,7 +244,7 @@ public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity impl
@Override
public void setLightStatusBar(boolean enabled) {
lightStatusbar = enabled;
lightStatusBar = enabled;
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.setLightStatusBar(enabled);
@ -249,7 +253,7 @@ public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity impl
@Override
public void setNavigationBarColor(int color) {
navigationbarColor = color;
navigationBarColor = color;
if (navigationBarColorAnimator != null) {
navigationBarColorAnimator.cancel();
@ -285,8 +289,8 @@ public abstract class AbsMusicPanelActivity extends AbsMusicServiceActivity impl
}
@Override
public void setTaskDescriptionColor(@ColorInt int color) {
taskColor = color;
public void setTaskDescriptionColor(int color) {
taskDescriptionColor = color;
if (getPanelState() == null || getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
super.setTaskDescriptionColor(color);

View file

@ -1,14 +1,14 @@
package com.dkanada.gramophone.activities.base;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import com.kabouzeid.appthemehelper.ATH;
import com.kabouzeid.appthemehelper.util.ColorUtil;
import com.kabouzeid.appthemehelper.util.MaterialDialogsUtil;
import com.dkanada.gramophone.R;
import com.dkanada.gramophone.util.PreferenceUtil;
import com.dkanada.gramophone.util.Util;
@ -22,7 +22,6 @@ public abstract class AbsThemeActivity extends AppCompatActivity {
setTheme(PreferenceUtil.getInstance(this).getTheme().style);
setColor(PreferenceUtil.getInstance(this).getPrimaryColor());
MaterialDialogsUtil.updateMaterialDialogsThemeSingleton(this);
}
@Override
@ -53,7 +52,7 @@ public abstract class AbsThemeActivity extends AppCompatActivity {
setNavigationBarColor(color);
}
protected void setDrawUnderStatusBar() {
private void setDrawUnderStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Util.setAllowDrawUnderStatusBar(getWindow());
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
@ -77,18 +76,38 @@ public abstract class AbsThemeActivity extends AppCompatActivity {
}
public void setTaskDescriptionColor(int color) {
ATH.setTaskDescriptionColor(this, color);
int solid = ColorUtil.stripAlpha(color);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setTaskDescription(new ActivityManager.TaskDescription(getTitle().toString(), null, solid));
}
}
public void setNavigationBarColor(int color) {
ATH.setNavigationbarColor(this, color);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(color);
}
}
@SuppressLint("InlinedApi")
public void setLightStatusBar(boolean enabled) {
ATH.setLightStatusbar(this, enabled);
View view = getWindow().getDecorView();
int flags = enabled
? view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
: view.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
view.setSystemUiVisibility(flags);
}
@SuppressLint("InlinedApi")
public void setLightNavigationBar(boolean enabled) {
ATH.setLightNavigationbar(this, enabled);
View view = getWindow().getDecorView();
int flags = enabled
? view.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
: view.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
view.setSystemUiVisibility(flags);
}
}