diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java
index 19219584a..888bf536c 100755
--- a/app/src/main/java/com/hippo/ehviewer/Settings.java
+++ b/app/src/main/java/com/hippo/ehviewer/Settings.java
@@ -248,6 +248,10 @@ public class Settings {
return getIntFromStr(KEY_THEME, DEFAULT_THEME);
}
+ public static void putTheme(int theme) {
+ putIntToStr(KEY_THEME, theme);
+ }
+
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/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java
index 2402821dc..f642a0cc9 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java
+++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java
@@ -40,12 +40,14 @@ import android.util.Pair;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
+import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.hippo.drawerlayout.DrawerLayout;
import com.hippo.ehviewer.AppConfig;
import com.hippo.ehviewer.Crash;
+import com.hippo.ehviewer.EhApplication;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.Settings;
import com.hippo.ehviewer.client.EhUrl;
@@ -115,6 +117,8 @@ public final class MainActivity extends StageActivity
private LoadImageView mAvatar;
@Nullable
private TextView mDisplayName;
+ @Nullable
+ private Button mChangeTheme;
private int mNavCheckedItem = 0;
@@ -335,6 +339,7 @@ public final class MainActivity extends StageActivity
View headerLayout = mNavView.getHeaderView(0);
mAvatar = (LoadImageView) ViewUtils.$$(headerLayout, R.id.avatar);
mDisplayName = (TextView) ViewUtils.$$(headerLayout, R.id.display_name);
+ mChangeTheme = (Button) ViewUtils.$$(this, R.id.change_theme);
mDrawerLayout.setStatusBarColor(ResourcesUtils.getAttrColor(this, R.attr.colorPrimaryDark));
// Pre-L need shadow drawable
@@ -349,6 +354,12 @@ public final class MainActivity extends StageActivity
mNavView.setNavigationItemSelectedListener(this);
}
+ mChangeTheme.setText(getThemeText());
+ mChangeTheme.setOnClickListener(v -> {
+ Settings.putTheme(getNextTheme());
+ ((EhApplication) getApplication()).recreate();
+ });
+
if (savedInstanceState == null) {
onInit();
if (Settings.getAutoCheckUpdateEnable()) {
@@ -363,6 +374,35 @@ public final class MainActivity extends StageActivity
}
}
+ private String getThemeText() {
+ int resId;
+ switch (Settings.getTheme()) {
+ default:
+ case Settings.THEME_LIGHT:
+ resId = R.string.theme_light;
+ break;
+ case Settings.THEME_DARK:
+ resId = R.string.theme_dark;
+ break;
+ case Settings.THEME_BLACK:
+ resId = R.string.theme_black;
+ break;
+ }
+ return getString(resId);
+ }
+
+ private int getNextTheme() {
+ switch (Settings.getTheme()) {
+ default:
+ case Settings.THEME_LIGHT:
+ return Settings.THEME_DARK;
+ case Settings.THEME_DARK:
+ return Settings.THEME_BLACK;
+ case Settings.THEME_BLACK:
+ return Settings.THEME_LIGHT;
+ }
+ }
+
private void checkDownloadLocation() {
UniFile uniFile = Settings.getDownloadLocation();
// null == uniFile for first start
diff --git a/app/src/main/java/com/hippo/ehviewer/widget/EhNavigationView.java b/app/src/main/java/com/hippo/ehviewer/widget/EhNavigationView.java
index f4724a474..bfe66cde6 100644
--- a/app/src/main/java/com/hippo/ehviewer/widget/EhNavigationView.java
+++ b/app/src/main/java/com/hippo/ehviewer/widget/EhNavigationView.java
@@ -21,12 +21,11 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Build;
import android.support.annotation.NonNull;
-import android.support.design.widget.NavigationView;
import android.util.AttributeSet;
-
+import android.widget.LinearLayout;
import com.hippo.drawerlayout.DrawerLayoutChild;
-public class EhNavigationView extends NavigationView implements DrawerLayoutChild {
+public class EhNavigationView extends LinearLayout implements DrawerLayoutChild {
private static final int SCRIM_COLOR = 0x44000000;
private static final boolean DRAW_SCRIM = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 3e0fa0a43..c3cbbe70e 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -34,13 +34,30 @@
+ android:orientation="vertical"
+ android:background="?android:attr/windowBackground">
+
+
+
+
+
+
EhViewer
+
+ 亮色主题
+ 暗色主题
+ 黑色主题
+
主页
热门
收藏
diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml
index bcbe7c503..38d986742 100755
--- a/app/src/main/res/values-zh-rHK/strings.xml
+++ b/app/src/main/res/values-zh-rHK/strings.xml
@@ -19,6 +19,11 @@
EhViewer
+
+ 亮色主題
+ 暗色主題
+ 黑色主題
+
主頁
熱門
收藏
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 9b23f358d..b119e99c8 100755
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -19,6 +19,11 @@
EhViewer
+
+ 亮色主題
+ 暗色主題
+ 黑色主題
+
首頁
熱門
收藏
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2bf9b9bd7..11c0d6223 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -22,6 +22,11 @@
e-hentai
exhentai
+
+ Light Theme
+ Dark Theme
+ Black Theme
+
DOUJINSHI
MANGA