From 419405f4e2372b5f4b39b219453de4425bbd56f1 Mon Sep 17 00:00:00 2001 From: seven332 Date: Fri, 14 Dec 2018 20:20:22 +0800 Subject: [PATCH] Apply theme color to navigation bar --- app/src/main/java/com/hippo/ehviewer/Settings.java | 7 +++++++ .../main/java/com/hippo/ehviewer/ui/EhActivity.java | 7 +++++++ .../com/hippo/ehviewer/ui/EhPreferenceActivity.java | 7 +++++++ .../com/hippo/ehviewer/ui/fragment/EhFragment.java | 10 ++++++++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/eh_settings.xml | 5 +++++ 9 files changed, 40 insertions(+) diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index 888bf536c..0574520a1 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -252,6 +252,13 @@ public class Settings { putIntToStr(KEY_THEME, theme); } + public static final String KEY_APPLY_NAV_BAR_THEME_COLOR = "apply_nav_bar_theme_color"; + private static final boolean DEFAULT_APPLY_NAV_BAR_THEME_COLOR = false; + + public static boolean getApplyNavBarThemeColor() { + return getBoolean(KEY_APPLY_NAV_BAR_THEME_COLOR, DEFAULT_APPLY_NAV_BAR_THEME_COLOR); + } + public static final String KEY_GALLERY_SITE = "gallery_site"; private static final int DEFAULT_GALLERY_SITE = 1; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java index 0da056498..17c6c6857 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java @@ -17,14 +17,17 @@ package com.hippo.ehviewer.ui; import android.content.Context; +import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.StyleRes; import android.support.v7.app.AppCompatActivity; import android.view.WindowManager; import com.google.firebase.analytics.FirebaseAnalytics; +import com.hippo.android.resource.AttrResources; import com.hippo.content.ContextLocalWrapper; import com.hippo.ehviewer.EhApplication; +import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; import java.util.Locale; @@ -44,6 +47,10 @@ public abstract class EhActivity extends AppCompatActivity { if (Settings.getEnableAnalytics()) { FirebaseAnalytics.getInstance(this); } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Settings.getApplyNavBarThemeColor()) { + getWindow().setNavigationBarColor(AttrResources.getAttrColor(this, R.attr.colorPrimaryDark)); + } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/EhPreferenceActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/EhPreferenceActivity.java index 4eb978ed7..5cd2dada9 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/EhPreferenceActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/EhPreferenceActivity.java @@ -18,14 +18,17 @@ package com.hippo.ehviewer.ui; import android.content.Context; import android.content.res.Resources; +import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.StyleRes; import android.view.WindowManager; import com.google.firebase.analytics.FirebaseAnalytics; +import com.hippo.android.resource.AttrResources; import com.hippo.app.PrettyPreferenceActivity; import com.hippo.content.ContextLocalWrapper; import com.hippo.ehviewer.EhApplication; +import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; import java.util.Locale; @@ -45,6 +48,10 @@ public abstract class EhPreferenceActivity extends PrettyPreferenceActivity { if (Settings.getEnableAnalytics()) { FirebaseAnalytics.getInstance(this); } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Settings.getApplyNavBarThemeColor()) { + getWindow().setNavigationBarColor(AttrResources.getAttrColor(this, R.attr.colorPrimaryDark)); + } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java index 1c93a6c29..3c1a251f6 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java @@ -17,6 +17,7 @@ package com.hippo.ehviewer.ui.fragment; import android.app.Activity; +import android.os.Build; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; @@ -33,16 +34,22 @@ public class EhFragment extends PreferenceFragment addPreferencesFromResource(R.xml.eh_settings); Preference theme = findPreference(Settings.KEY_THEME); + Preference applyNavBarThemeColor = findPreference(Settings.KEY_APPLY_NAV_BAR_THEME_COLOR); Preference gallerySite = findPreference(Settings.KEY_GALLERY_SITE); Preference listMode = findPreference(Settings.KEY_LIST_MODE); Preference detailSize = findPreference(Settings.KEY_DETAIL_SIZE); Preference thumbSize = findPreference(Settings.KEY_THUMB_SIZE); theme.setOnPreferenceChangeListener(this); + applyNavBarThemeColor.setOnPreferenceChangeListener(this); gallerySite.setOnPreferenceChangeListener(this); listMode.setOnPreferenceChangeListener(this); detailSize.setOnPreferenceChangeListener(this); thumbSize.setOnPreferenceChangeListener(this); + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + getPreferenceScreen().removePreference(applyNavBarThemeColor); + } } @Override @@ -51,6 +58,9 @@ public class EhFragment extends PreferenceFragment if (Settings.KEY_THEME.equals(key)) { ((EhApplication) getActivity().getApplication()).recreate(); return true; + } else if (Settings.KEY_APPLY_NAV_BAR_THEME_COLOR.equals(key)) { + ((EhApplication) getActivity().getApplication()).recreate(); + return true; } else if (Settings.KEY_GALLERY_SITE.equals(key)) { getActivity().setResult(Activity.RESULT_OK); return true; diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index df7727f41..9d986dd1b 100755 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -408,6 +408,7 @@ 亮色 暗色 黑色 + 导航栏应用主题配色 画廊站点 列表模式 详情 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index f4c292975..843a4ed39 100755 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -407,6 +407,7 @@ 亮色 暗色 黑色 + 導航欄應用主題配色 畫廊站點 列表模式 詳情 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index afd2d1ee7..9302811b4 100755 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -407,6 +407,7 @@ 亮色 暗色 黑色 + 導航欄應用主題配色 圖庫站台 列表模式 詳細資料 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93b42c68f..6b5ba7f78 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -451,6 +451,7 @@ Light Dark Black + Apply theme color to navigation bar Gallery site List mode Detail diff --git a/app/src/main/res/xml/eh_settings.xml b/app/src/main/res/xml/eh_settings.xml index 327434abf..b5f569227 100644 --- a/app/src/main/res/xml/eh_settings.xml +++ b/app/src/main/res/xml/eh_settings.xml @@ -51,6 +51,11 @@ app:entryValues="@array/theme_entry_values" android:defaultValue="0"/> + +