From 6e53f0761b43d9bb8885e976ae4dc9b1b1387aab Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sat, 10 Nov 2018 16:41:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=A4=9C=E9=97=B4?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/autojs/autojs/App.java | 5 +- app/src/main/java/org/autojs/autojs/Pref.java | 6 ++ .../autojs/theme/ThemeColorManagerCompat.java | 42 +++++++++++++ .../org/autojs/autojs/ui/BaseActivity.java | 57 +++++++++++++++--- .../ui/edit/ClassSearchDialogBuilder.java | 1 - .../org/autojs/autojs/ui/edit/EditorView.java | 2 +- .../autojs/ui/edit/editor/CodeEditor.java | 1 - .../autojs/autojs/ui/edit/theme/Themes.java | 4 +- .../error/AbstractIssueReporterActivity.java | 3 +- .../autojs/ui/explorer/ExplorerView.java | 4 +- .../LayoutBoundsFloatyWindow.java | 1 - .../LayoutHierarchyFloatyWindow.java | 4 -- .../org/autojs/autojs/ui/log/LogActivity.java | 19 +++--- .../autojs/autojs/ui/main/MainActivity.java | 1 + .../autojs/ui/main/drawer/DrawerFragment.java | 12 +++- .../ui/main/task/TaskListRecyclerView.java | 9 +-- .../autojs/ui/splash/SplashActivity.java | 4 +- .../org/autojs/autojs/ui/widget/EWebView.java | 6 +- .../autojs/autojs/ui/widget/PrefSwitch.java | 13 +++- .../autojs/autojs/ui/widget/SwitchCompat.java | 11 ++-- .../autojs/ui/widget/ToolbarMenuItem.java | 23 ++++--- .../main/res/drawable-xhdpi/ic_night_mode.png | Bin 0 -> 4625 bytes app/src/main/res/layout/activity_about.xml | 1 + app/src/main/res/layout/activity_build.xml | 2 +- .../res/layout/activity_documentation.xml | 1 + .../main/res/layout/activity_error_report.xml | 1 + app/src/main/res/layout/activity_log.xml | 3 +- app/src/main/res/layout/activity_login.xml | 5 +- app/src/main/res/layout/activity_main.xml | 7 ++- .../res/layout/activity_project_config.xml | 2 +- app/src/main/res/layout/activity_register.xml | 7 ++- .../activity_script_widget_settings.xml | 1 + app/src/main/res/layout/activity_settings.xml | 2 +- .../layout/activity_shortcut_icon_select.xml | 1 + .../main/res/layout/activity_tasker_edit.xml | 1 + .../layout/activity_timed_task_setting.xml | 1 + .../main/res/layout/activity_view_sample.xml | 1 + app/src/main/res/layout/activity_web.xml | 1 + app/src/main/res/layout/drawer_menu_group.xml | 6 +- app/src/main/res/layout/drawer_menu_item.xml | 2 +- app/src/main/res/layout/editor_view.xml | 1 + app/src/main/res/layout/fragment_drawer.xml | 7 ++- .../res/layout/fragment_my_script_list.xml | 1 - .../res/layout/fragment_normal_toolbar.xml | 5 +- .../res/layout/fragment_search_toolbar.xml | 4 ++ .../main/res/layout/fragment_task_manager.xml | 3 +- .../res/layout/script_file_list_directory.xml | 10 +-- .../main/res/layout/script_file_list_file.xml | 10 +-- app/src/main/res/values-night/colors.xml | 16 +++++ app/src/main/res/values-night/styles.xml | 12 ++++ app/src/main/res/values/attrs.xml | 3 + app/src/main/res/values/colors.xml | 17 ++++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 21 +++++-- autojs/src/main/AndroidManifest.xml | 6 +- autojs/src/main/assets/modules/__ui__.js | 2 +- .../autojs/core/console/ConsoleView.java | 8 +-- .../stardust/autojs/runtime/api/Floaty.java | 3 +- autojs/src/main/res/layout/js_appbar.xml | 4 +- autojs/src/main/res/values/styles.xml | 10 +-- .../main/java/com/stardust/util/BiMap.java | 5 ++ .../main/java/com/stardust/util/BiMaps.java | 12 ++++ inrt/src/main/AndroidManifest.xml | 2 +- inrt/src/main/res/layout/activity_main.xml | 2 +- .../src/main/res/layout/activity_settings.xml | 2 +- 65 files changed, 328 insertions(+), 113 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/ic_night_mode.png create mode 100644 app/src/main/res/values-night/colors.xml create mode 100644 app/src/main/res/values-night/styles.xml diff --git a/app/src/main/java/org/autojs/autojs/App.java b/app/src/main/java/org/autojs/autojs/App.java index e290f27f..a7492be9 100644 --- a/app/src/main/java/org/autojs/autojs/App.java +++ b/app/src/main/java/org/autojs/autojs/App.java @@ -7,6 +7,7 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.support.multidex.MultiDexApplication; +import android.support.v7.app.AppCompatDelegate; import android.view.View; import android.widget.ImageView; @@ -26,6 +27,7 @@ import org.autojs.autojs.autojs.AutoJs; import org.autojs.autojs.autojs.key.GlobalKeyObserver; import org.autojs.autojs.external.receiver.DynamicBroadcastReceivers; import org.autojs.autojs.network.GlideApp; +import org.autojs.autojs.theme.ThemeColorManagerCompat; import org.autojs.autojs.timing.IntentTask; import org.autojs.autojs.timing.TimedTaskManager; import org.autojs.autojs.timing.TimedTaskScheduler; @@ -99,8 +101,7 @@ public class App extends MultiDexApplication { } private void init() { - ThemeColorManager.setDefaultThemeColor(new ThemeColor(getResources().getColor(R.color.colorPrimary), getResources().getColor(R.color.colorPrimaryDark), getResources().getColor(R.color.colorAccent))); - ThemeColorManager.init(this); + ThemeColorManagerCompat.init(this, new ThemeColor(getResources().getColor(R.color.colorPrimary), getResources().getColor(R.color.colorPrimaryDark), getResources().getColor(R.color.colorAccent))); AutoJs.initInstance(this); if (Pref.isRunningVolumeControlEnabled()) { GlobalKeyObserver.init(); diff --git a/app/src/main/java/org/autojs/autojs/Pref.java b/app/src/main/java/org/autojs/autojs/Pref.java index 90a2c01f..0b2ece2c 100644 --- a/app/src/main/java/org/autojs/autojs/Pref.java +++ b/app/src/main/java/org/autojs/autojs/Pref.java @@ -7,8 +7,10 @@ import android.preference.PreferenceManager; import com.stardust.app.GlobalAppContext; import com.stardust.autojs.runtime.accessibility.AccessibilityConfig; +import com.stardust.theme.ThemeColorManager; import org.autojs.autojs.autojs.key.GlobalKeyObserver; +import org.autojs.autojs.theme.ThemeColorManagerCompat; import java.io.File; import java.util.concurrent.TimeUnit; @@ -55,6 +57,10 @@ public class Pref { return b; } + public static boolean isNightModeEnabled() { + return def().getBoolean(getString(R.string.key_night_mode), false); + } + public static boolean isFirstGoToAccessibilitySetting() { return getDisposableBoolean("isFirstGoToAccessibilitySetting", true); } diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColorManagerCompat.java b/app/src/main/java/org/autojs/autojs/theme/ThemeColorManagerCompat.java index 23c2bdee..c8056641 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColorManagerCompat.java +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColorManagerCompat.java @@ -1,8 +1,17 @@ package org.autojs.autojs.theme; +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AppCompatDelegate; + import com.stardust.app.GlobalAppContext; + import org.autojs.autojs.*; import org.autojs.autojs.R; + +import com.stardust.theme.ThemeColor; import com.stardust.theme.ThemeColorManager; /** @@ -11,6 +20,14 @@ import com.stardust.theme.ThemeColorManager; public class ThemeColorManagerCompat { + private static SharedPreferences sSharedPreferences; + private static Context sContext; + private static SharedPreferences.OnSharedPreferenceChangeListener sPreferenceChangeListener = (sharedPreferences, key) -> { + if (key.equals(sContext.getString(R.string.key_night_mode))) { + setNightModeEnabled(sharedPreferences.getBoolean(key, false)); + } + }; + public static int getColorPrimary() { int color = ThemeColorManager.getColorPrimary(); if (color == 0) { @@ -19,4 +36,29 @@ public class ThemeColorManagerCompat { return color; } } + + public static void setNightModeEnabled(boolean enabled) { + if (enabled) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); + ThemeColor currentTheme = ThemeColor.fromPreferences(PreferenceManager.getDefaultSharedPreferences(sContext), null); + if (currentTheme != null) { + currentTheme.saveIn(sSharedPreferences); + } + ThemeColorManager.setThemeColor(ContextCompat.getColor(sContext, R.color.theme_color_black)); + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + ThemeColor previousTheme = ThemeColor.fromPreferences(sSharedPreferences, null); + if (previousTheme != null) { + ThemeColorManager.setThemeColor(previousTheme.colorPrimary); + } + } + } + + public static void init(Context context, ThemeColor defaultThemeColor) { + sContext = context; + sSharedPreferences = context.getSharedPreferences("theme_color", Context.MODE_PRIVATE); + ThemeColorManager.setDefaultThemeColor(defaultThemeColor); + ThemeColorManager.init(context); + PreferenceManager.getDefaultSharedPreferences(context).registerOnSharedPreferenceChangeListener(sPreferenceChangeListener); + } } diff --git a/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java b/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java index bbc4f9be..ad86aecb 100644 --- a/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java @@ -1,21 +1,25 @@ package org.autojs.autojs.ui; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.support.annotation.CallSuper; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; +import android.view.Menu; import android.view.View; -import android.widget.SeekBar; - -import org.autojs.autojs.R; -import org.autojs.autojs.network.VersionService; +import com.stardust.app.GlobalAppContext; import com.stardust.theme.ThemeColorManager; -import com.stardust.util.BackPressedHandler; + +import org.autojs.autojs.Pref; +import org.autojs.autojs.R; import java.util.ArrayList; import java.util.Arrays; @@ -30,14 +34,33 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; public abstract class BaseActivity extends AppCompatActivity { - protected static final int PERMISSION_REQUEST_CODE = 11186; + private boolean mShouldApplyDayNightModeForOptionsMenu = true; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } + protected void applyDayNightMode() { + GlobalAppContext.post(() -> { + if (Pref.isNightModeEnabled()) { + setNightModeEnabled(Pref.isNightModeEnabled()); + } + }); + } + + public void setNightModeEnabled(boolean enabled) { + if (enabled) { + getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES); + } else { + getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO); + } + if (getDelegate().applyDayNight()) { + recreate(); + } + } + @Override protected void onStart() { super.onStart(); @@ -85,7 +108,7 @@ public abstract class BaseActivity extends AppCompatActivity { } public static void setToolbarAsBack(final AppCompatActivity activity, int id, String title) { - Toolbar toolbar = (Toolbar) activity.findViewById(id); + Toolbar toolbar = activity.findViewById(id); toolbar.setTitle(title); activity.setSupportActionBar(toolbar); if (activity.getSupportActionBar() != null) { @@ -100,4 +123,24 @@ public abstract class BaseActivity extends AppCompatActivity { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + if (mShouldApplyDayNightModeForOptionsMenu && Pref.isNightModeEnabled()) { + for (int i = 0; i < menu.size(); i++) { + Drawable drawable = menu.getItem(i).getIcon(); + if (drawable != null) { + drawable.mutate(); + drawable.setColorFilter(ContextCompat.getColor(this, R.color.toolbar), PorterDuff.Mode.SRC_ATOP); + } + } + mShouldApplyDayNightModeForOptionsMenu = false; + } + return super.onPrepareOptionsMenu(menu); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + + return super.onCreateOptionsMenu(menu); + } } diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/ClassSearchDialogBuilder.java b/app/src/main/java/org/autojs/autojs/ui/edit/ClassSearchDialogBuilder.java index fde3b77d..e241bb8a 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/ClassSearchDialogBuilder.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/ClassSearchDialogBuilder.java @@ -18,7 +18,6 @@ import org.autojs.autojs.R; import org.autojs.autojs.model.indices.AndroidClassIndices; import org.autojs.autojs.model.indices.ClassSearchingItem; import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder; -import org.autojs.autojs.tool.MaterialDialogFactory; import org.autojs.autojs.ui.widget.AutoAdapter; import org.autojs.autojs.ui.widget.BindableViewHolder; import org.autojs.autojs.ui.widget.SimpleTextWatcher; diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java b/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java index 52b3dedb..db2db7c5 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java @@ -272,7 +272,7 @@ public class EditorView extends FrameLayout implements CodeCompletionBar.OnHintC @AfterViews void init() { - setTheme(Theme.getDefault(getContext())); + //setTheme(Theme.getDefault(getContext())); setUpEditor(); setUpInputMethodEnhancedBar(); setUpFunctionsKeyboard(); diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java index aff768ad..463e09c6 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java @@ -85,7 +85,6 @@ public class CodeEditor extends HVScrollView { mCodeEditText.addTextChangedListener(new AutoIndent(mCodeEditText)); mTextViewRedoUndo = new TextViewUndoRedo(mCodeEditText); mJavaScriptHighlighter = new JavaScriptHighlighter(mTheme, mCodeEditText); - setTheme(Theme.getDefault(getContext())); mJsBeautifier = new JsBeautifier(this, "js/js-beautify"); } diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/theme/Themes.java b/app/src/main/java/org/autojs/autojs/ui/edit/theme/Themes.java index 2ae6590d..00888ba2 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/theme/Themes.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/theme/Themes.java @@ -12,7 +12,6 @@ import java.util.Collections; import java.util.List; import io.reactivex.Observable; -import io.reactivex.Single; import io.reactivex.schedulers.Schedulers; import io.reactivex.subjects.PublishSubject; @@ -25,6 +24,7 @@ public class Themes { private static final String ASSETS_THEMES_PATH = "editor/theme"; private static final String DEFAULT_THEME = "Quiet Light"; + private static final String DARK_THEME = "Dark (Visual Studio)"; private static List sThemes; private static Theme sDefaultTheme; @@ -80,7 +80,7 @@ public class Themes { } public static Observable getCurrent(Context context) { - String currentTheme = Pref.getCurrentTheme(); + String currentTheme = Pref.isNightModeEnabled() ? DARK_THEME : Pref.getCurrentTheme(); if (currentTheme == null) return getDefault(context); return getAllThemes(context) diff --git a/app/src/main/java/org/autojs/autojs/ui/error/AbstractIssueReporterActivity.java b/app/src/main/java/org/autojs/autojs/ui/error/AbstractIssueReporterActivity.java index 69936c89..dc420b82 100644 --- a/app/src/main/java/org/autojs/autojs/ui/error/AbstractIssueReporterActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/error/AbstractIssueReporterActivity.java @@ -44,6 +44,7 @@ import com.heinrichreimersoftware.androidissuereporter.model.github.GithubTarget import com.heinrichreimersoftware.androidissuereporter.util.ColorUtils; import com.heinrichreimersoftware.androidissuereporter.util.ThemeUtils; +import org.autojs.autojs.ui.BaseActivity; import org.eclipse.egit.github.core.Issue; import org.eclipse.egit.github.core.client.GitHubClient; import org.eclipse.egit.github.core.client.RequestException; @@ -64,7 +65,7 @@ import com.stardust.theme.ThemeColorManager; * Created by Stardust on 2017/4/3. */ -public abstract class AbstractIssueReporterActivity extends AppCompatActivity { +public abstract class AbstractIssueReporterActivity extends BaseActivity { private static final String TAG = AbstractIssueReporterActivity.class.getSimpleName(); diff --git a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java index 0c97f6c9..9794d6c4 100644 --- a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java +++ b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java @@ -5,6 +5,7 @@ import android.content.Context; import android.graphics.drawable.GradientDrawable; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; +import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; @@ -207,6 +208,7 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR } private void init() { + Log.d(LOG_TAG, "item bg = " + Integer.toHexString(ContextCompat.getColor(getContext(), R.color.item_background))); setOnRefreshListener(this); inflate(getContext(), R.layout.explorer_view, this); mExplorerItemListView = findViewById(R.id.explorer_item_list); @@ -437,7 +439,7 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR @Override public BindableViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + LayoutInflater inflater = LayoutInflater.from(getContext()); return ExplorerView.this.onCreateViewHolder(inflater, parent, viewType); } diff --git a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutBoundsFloatyWindow.java b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutBoundsFloatyWindow.java index d69bce4f..c0d36ee4 100644 --- a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutBoundsFloatyWindow.java +++ b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutBoundsFloatyWindow.java @@ -5,7 +5,6 @@ import android.view.ContextThemeWrapper; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; diff --git a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java index 18813913..54fc4be2 100644 --- a/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java +++ b/app/src/main/java/org/autojs/autojs/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java @@ -1,24 +1,20 @@ package org.autojs.autojs.ui.floating.layoutinspector; import android.content.Context; -import android.support.annotation.NonNull; import android.view.ContextThemeWrapper; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; -import android.view.WindowManager; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; import com.stardust.app.DialogUtils; -import com.stardust.app.GlobalAppContext; import com.stardust.enhancedfloaty.FloatyService; import org.autojs.autojs.R; import org.autojs.autojs.ui.codegeneration.CodeGenerateDialog; import org.autojs.autojs.ui.floating.FloatyWindowManger; import org.autojs.autojs.ui.floating.FullScreenFloatyWindow; -import com.stardust.view.accessibility.LayoutInspector; import com.stardust.view.accessibility.NodeInfo; import org.autojs.autojs.ui.widget.BubblePopupMenu; diff --git a/app/src/main/java/org/autojs/autojs/ui/log/LogActivity.java b/app/src/main/java/org/autojs/autojs/ui/log/LogActivity.java index 26257c11..1a3723a4 100644 --- a/app/src/main/java/org/autojs/autojs/ui/log/LogActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/log/LogActivity.java @@ -1,22 +1,19 @@ package org.autojs.autojs.ui.log; import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; +import android.support.annotation.Nullable; import android.view.View; import com.stardust.autojs.core.console.ConsoleView; import com.stardust.autojs.core.console.StardustConsole; -import org.autojs.autojs.R; -import org.autojs.autojs.autojs.AutoJs; -import org.autojs.autojs.ui.BaseActivity; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Click; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; +import org.autojs.autojs.R; +import org.autojs.autojs.autojs.AutoJs; +import org.autojs.autojs.ui.BaseActivity; @EActivity(R.layout.activity_log) public class LogActivity extends BaseActivity { @@ -26,10 +23,16 @@ public class LogActivity extends BaseActivity { private StardustConsole mStardustConsole; + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + applyDayNightMode(); + } + @AfterViews void setupViews() { setToolbarAsBack(getString(R.string.text_log)); - mStardustConsole = (StardustConsole) AutoJs.getInstance().getGlobalConsole(); + mStardustConsole = AutoJs.getInstance().getGlobalConsole(); mConsoleView.setConsole(mStardustConsole); mConsoleView.findViewById(R.id.input_container).setVisibility(View.GONE); } diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java index e3313660..1827429f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java @@ -96,6 +96,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega mVersionGuard = new VersionGuard(this); showAnnunciationIfNeeded(); EventBus.getDefault().register(this); + applyDayNightMode(); } @AfterViews diff --git a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java index 36eab2b3..a9c6f7fb 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.java @@ -27,6 +27,7 @@ import org.autojs.autojs.external.foreground.ForegroundService; import org.autojs.autojs.network.GlideApp; import org.autojs.autojs.network.UserService; import org.autojs.autojs.tool.Observers; +import org.autojs.autojs.ui.BaseActivity; import org.autojs.autojs.ui.common.NotAskAgainDialog; import org.autojs.autojs.ui.floating.CircularMenu; import org.autojs.autojs.ui.floating.FloatyWindowManger; @@ -146,7 +147,7 @@ public class DrawerFragment extends android.support.v4.app.Fragment { setChecked(mFloatingWindowItem, true); } setChecked(mConnectionItem, DevPluginService.getInstance().isConnected()); - if(Pref.isForegroundServiceEnabled()){ + if (Pref.isForegroundServiceEnabled()) { ForegroundService.start(GlobalAppContext.get()); setChecked(mForegroundServiceItem, true); } @@ -167,6 +168,7 @@ public class DrawerFragment extends android.support.v4.app.Fragment { new DrawerMenuGroup(R.string.text_others), mConnectionItem, new DrawerMenuItem(R.drawable.ic_personalize, R.string.text_theme_color, this::openThemeColorSettings), + new DrawerMenuItem(R.drawable.ic_night_mode, R.string.text_night_mode, R.string.key_night_mode, this::toggleNightMode), mCheckForUpdatesItem ))); mDrawerMenu.setAdapter(mDrawerMenuAdapter); @@ -239,6 +241,10 @@ public class DrawerFragment extends android.support.v4.app.Fragment { SettingsActivity.selectThemeColor(getActivity()); } + void toggleNightMode(DrawerMenuItemViewHolder holder) { + ((BaseActivity) getActivity()).setNightModeEnabled(holder.getSwitchCompat().isChecked()); + } + @SuppressLint("CheckResult") private void enableAccessibilityServiceByRootIfNeeded() { Observable.fromCallable(() -> Pref.shouldEnableAccessibilityServiceByRoot() && !isAccessibilityServiceEnabled()) @@ -264,9 +270,9 @@ public class DrawerFragment extends android.support.v4.app.Fragment { private void toggleForegroundService(DrawerMenuItemViewHolder holder) { boolean checked = holder.getSwitchCompat().isChecked(); - if(checked){ + if (checked) { ForegroundService.start(GlobalAppContext.get()); - }else { + } else { ForegroundService.stop(GlobalAppContext.get()); } } diff --git a/app/src/main/java/org/autojs/autojs/ui/main/task/TaskListRecyclerView.java b/app/src/main/java/org/autojs/autojs/ui/main/task/TaskListRecyclerView.java index 770ff9bd..18123940 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/task/TaskListRecyclerView.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/task/TaskListRecyclerView.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.drawable.GradientDrawable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v4.content.ContextCompat; import android.support.v7.widget.ThemeColorRecyclerView; import android.util.AttributeSet; import android.util.Log; @@ -62,7 +63,7 @@ public class TaskListRecyclerView extends ThemeColorRecyclerView { private ScriptExecutionListener mScriptExecutionListener = new SimpleScriptExecutionListener() { @Override public void onStart(final ScriptExecution execution) { - post(()-> mAdapter.notifyChildInserted(0, mRunningTaskGroup.addTask(execution))); + post(() -> mAdapter.notifyChildInserted(0, mRunningTaskGroup.addTask(execution))); } @Override @@ -75,8 +76,8 @@ public class TaskListRecyclerView extends ThemeColorRecyclerView { onFinish(execution); } - private void onFinish(ScriptExecution execution){ - post(()->{ + private void onFinish(ScriptExecution execution) { + post(() -> { final int i = mRunningTaskGroup.removeTask(execution); if (i >= 0) { mAdapter.notifyChildRemoved(0, i); @@ -105,7 +106,7 @@ public class TaskListRecyclerView extends ThemeColorRecyclerView { private void init() { setLayoutManager(new WrapContentLinearLayoutManager(getContext())); addItemDecoration(new HorizontalDividerItemDecoration.Builder(getContext()) - .color(0xffEDEEEF) + .color(ContextCompat.getColor(getContext(), R.color.divider)) .size(2) .marginResId(R.dimen.script_and_folder_list_divider_left_margin, R.dimen.script_and_folder_list_divider_right_margin) .showLastDivider() diff --git a/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java b/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java index aa361c8c..ab0f628e 100644 --- a/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java @@ -3,9 +3,9 @@ package org.autojs.autojs.ui.splash; import android.Manifest; import android.os.Bundle; import android.os.Handler; -import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatDelegate; import android.util.Log; import android.view.View; @@ -29,7 +29,7 @@ public class SplashActivity extends BaseActivity { public static final String FORCE_SHOW_AD = "forceShowAd"; private static final String LOG_TAG = SplashActivity.class.getSimpleName(); - private static final long INIT_TIMEOUT = 1000; + private static final long INIT_TIMEOUT = 500; private boolean mCanEnterNextActivity = false; diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java b/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java index 7340072c..0de303a1 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/EWebView.java @@ -66,9 +66,9 @@ public class EWebView extends FrameLayout implements SwipeRefreshLayout.OnRefres private void init() { inflate(getContext(), R.layout.ewebview, this); - mWebView = (WebView) findViewById(R.id.web_view); - mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); - mProgressBar = (ProgressBar) findViewById(R.id.progress_bar); + mWebView = findViewById(R.id.web_view); + mSwipeRefreshLayout = findViewById(R.id.swipe_refresh_layout); + mProgressBar = findViewById(R.id.progress_bar); mSwipeRefreshLayout.setOnRefreshListener(this); setUpWebView(); } diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/PrefSwitch.java b/app/src/main/java/org/autojs/autojs/ui/widget/PrefSwitch.java index c8396a89..bb85fa56 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/PrefSwitch.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/PrefSwitch.java @@ -6,13 +6,18 @@ import android.content.res.TypedArray; import android.preference.PreferenceManager; import android.util.AttributeSet; +import com.stardust.theme.ThemeColor; +import com.stardust.theme.ThemeColorHelper; +import com.stardust.theme.ThemeColorManager; +import com.stardust.theme.ThemeColorMutable; + import org.autojs.autojs.R; /** * Created by Stardust on 2017/8/6. */ -public class PrefSwitch extends SwitchCompat implements SharedPreferences.OnSharedPreferenceChangeListener { +public class PrefSwitch extends SwitchCompat implements SharedPreferences.OnSharedPreferenceChangeListener, ThemeColorMutable { private String mPrefKey; private SharedPreferences mSharedPreferences; @@ -47,6 +52,11 @@ public class PrefSwitch extends SwitchCompat implements SharedPreferences.OnShar setChecked(mDefaultChecked, false); } a.recycle(); + ThemeColorManager.add(this); + } + + public void setThemeColor(ThemeColor color) { + ThemeColorHelper.setColorPrimary(this, color.colorPrimary); } private void readInitialState() { @@ -99,6 +109,7 @@ public class PrefSwitch extends SwitchCompat implements SharedPreferences.OnShar if (visibility == VISIBLE) { readInitialState(); } + } } diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/SwitchCompat.java b/app/src/main/java/org/autojs/autojs/ui/widget/SwitchCompat.java index 55528fb7..f3788e0b 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/SwitchCompat.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/SwitchCompat.java @@ -27,14 +27,11 @@ public class SwitchCompat extends android.support.v7.widget.SwitchCompat { @Override public void setOnCheckedChangeListener(final OnCheckedChangeListener listener) { - super.setOnCheckedChangeListener(new OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (mIgnoreCheckedChange) { - return; - } - listener.onCheckedChanged(buttonView, isChecked); + super.setOnCheckedChangeListener((buttonView, isChecked) -> { + if (mIgnoreCheckedChange) { + return; } + listener.onCheckedChanged(buttonView, isChecked); }); } diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.java b/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.java index 4d813ab6..728feb60 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.java @@ -7,6 +7,7 @@ import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Build; +import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.widget.ImageView; import android.widget.LinearLayout; @@ -20,24 +21,31 @@ import org.autojs.autojs.R; public class ToolbarMenuItem extends LinearLayout { - private static final int COLOR_DISABLED = 0X77e0e0e0; + private final int mColorDisabled; + private final int mColorEnabled; private ImageView mImageView; private TextView mTextView; private Drawable mEnabledDrawable, mDisabledDrawable; public ToolbarMenuItem(Context context, AttributeSet attrs) { super(context, attrs); + mColorDisabled = ContextCompat.getColor(context, R.color.toolbar_disabled); + mColorEnabled = ContextCompat.getColor(context, R.color.toolbar); init(attrs); } public ToolbarMenuItem(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + mColorDisabled = ContextCompat.getColor(context, R.color.toolbar_disabled); + mColorEnabled = ContextCompat.getColor(context, R.color.toolbar); init(attrs); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public ToolbarMenuItem(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); + mColorDisabled = ContextCompat.getColor(context, R.color.toolbar_disabled); + mColorEnabled = ContextCompat.getColor(context, R.color.toolbar); init(attrs); } @@ -48,12 +56,13 @@ public class ToolbarMenuItem extends LinearLayout { int iconResId = a.getResourceId(R.styleable.ToolbarMenuItem_icon, 0); int iconColor = a.getColor(R.styleable.ToolbarMenuItem_icon_color, Color.TRANSPARENT); a.recycle(); - mImageView = (ImageView) findViewById(R.id.icon); - mTextView = (TextView) findViewById(R.id.text); + mImageView = findViewById(R.id.icon); + mTextView = findViewById(R.id.text); mTextView.setText(text); + mTextView.setTextColor(mColorEnabled); mImageView.setImageResource(iconResId); if (iconColor != Color.TRANSPARENT) { - mImageView.setImageDrawable(convertDrawableToGrayScale(mImageView.getDrawable(), iconColor)); + mImageView.setImageDrawable(tintDrawable(mImageView.getDrawable(), iconColor)); } } @@ -65,12 +74,12 @@ public class ToolbarMenuItem extends LinearLayout { ensureEnabledDrawable(); ensureDisabledDrawable(); mImageView.setImageDrawable(enabled ? mEnabledDrawable : mDisabledDrawable); - mTextView.setTextColor(enabled ? Color.WHITE : COLOR_DISABLED); + mTextView.setTextColor(enabled ? mColorEnabled : mColorDisabled); } private void ensureDisabledDrawable() { if (mDisabledDrawable == null) { - mDisabledDrawable = convertDrawableToGrayScale(mEnabledDrawable, COLOR_DISABLED); + mDisabledDrawable = tintDrawable(mEnabledDrawable, mColorDisabled); } } @@ -80,7 +89,7 @@ public class ToolbarMenuItem extends LinearLayout { } } - public static Drawable convertDrawableToGrayScale(Drawable drawable, int color) { + public static Drawable tintDrawable(Drawable drawable, int color) { if (drawable == null || drawable.getConstantState() == null) return null; Drawable res = drawable.getConstantState().newDrawable().mutate(); diff --git a/app/src/main/res/drawable-xhdpi/ic_night_mode.png b/app/src/main/res/drawable-xhdpi/ic_night_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..a45978bc35a97001f436b30890cfe12ee34e28b4 GIT binary patch literal 4625 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 00f7bf03..fdcfda3f 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -23,6 +23,7 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" + android:theme="@style/ToolBarStyle" app:popupTheme="@style/AppTheme.PopupOverlay" app:title="@string/text_about"/> diff --git a/app/src/main/res/layout/activity_build.xml b/app/src/main/res/layout/activity_build.xml index a55797cb..f05c6a9b 100644 --- a/app/src/main/res/layout/activity_build.xml +++ b/app/src/main/res/layout/activity_build.xml @@ -12,6 +12,7 @@ @@ -37,7 +38,6 @@ android:layout_height="wrap_content" android:layout_marginLeft="6dp" android:layout_marginRight="6dp" - app:cardBackgroundColor="@android:color/white" app:cardCornerRadius="2dp" app:cardElevation="1dp" app:cardUseCompatPadding="true"> diff --git a/app/src/main/res/layout/activity_documentation.xml b/app/src/main/res/layout/activity_documentation.xml index 1aa5bf92..9052b6e0 100644 --- a/app/src/main/res/layout/activity_documentation.xml +++ b/app/src/main/res/layout/activity_documentation.xml @@ -15,6 +15,7 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" + android:theme="@style/ToolBarStyle" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"/> diff --git a/app/src/main/res/layout/activity_error_report.xml b/app/src/main/res/layout/activity_error_report.xml index 993b20d6..53053b61 100644 --- a/app/src/main/res/layout/activity_error_report.xml +++ b/app/src/main/res/layout/activity_error_report.xml @@ -13,6 +13,7 @@ - + android:textColor="?android:textColorPrimary"/> @@ -56,7 +57,7 @@ android:layout_height="wrap_content" android:hint="@string/text_password" android:inputType="textPassword" - android:textColor="#dd000000"/> + android:textColor="?android:textColorPrimary"/> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8cf59738..b03168b1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -25,6 +25,7 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" + android:theme="@style/ToolBarStyle" android:title="@string/_app_name" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/AppTheme.PopupOverlay"/> @@ -34,8 +35,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" - app:tabIndicatorColor="@android:color/white" - app:tabMode="scrollable"/> + app:tabIndicatorColor="@color/tab_indicator" + app:tabMode="scrollable" + app:tabSelectedTextColor="@color/tab_indicator" + app:tabTextColor="@color/tab_text"/> @@ -167,7 +168,6 @@ android:layout_height="wrap_content" android:layout_marginLeft="6dp" android:layout_marginRight="6dp" - app:cardBackgroundColor="@android:color/white" app:cardCornerRadius="2dp" app:cardElevation="1dp" app:cardUseCompatPadding="true"> diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml index 95c41ea3..39ced034 100644 --- a/app/src/main/res/layout/activity_register.xml +++ b/app/src/main/res/layout/activity_register.xml @@ -20,6 +20,7 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" + android:theme="@style/ToolBarStyle" android:title="@string/text_login" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/AppTheme.PopupOverlay"/> @@ -41,7 +42,7 @@ android:layout_height="wrap_content" android:hint="@string/text_email" android:inputType="textEmailAddress" - android:textColor="#dd000000"/> + android:textColor="?android:textColorPrimary"/> @@ -57,7 +58,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/text_username" - android:textColor="#dd000000"/> + android:textColor="?android:textColorPrimary"/> @@ -73,7 +74,7 @@ android:layout_height="wrap_content" android:hint="@string/text_password" android:inputType="textPassword" - android:textColor="#dd000000"/> + android:textColor="?android:textColorPrimary"/> diff --git a/app/src/main/res/layout/activity_script_widget_settings.xml b/app/src/main/res/layout/activity_script_widget_settings.xml index 5aa64c04..4c43c0f1 100644 --- a/app/src/main/res/layout/activity_script_widget_settings.xml +++ b/app/src/main/res/layout/activity_script_widget_settings.xml @@ -15,6 +15,7 @@ @@ -15,6 +14,7 @@ diff --git a/app/src/main/res/layout/activity_view_sample.xml b/app/src/main/res/layout/activity_view_sample.xml index d973ed6a..574fb643 100644 --- a/app/src/main/res/layout/activity_view_sample.xml +++ b/app/src/main/res/layout/activity_view_sample.xml @@ -16,6 +16,7 @@ diff --git a/app/src/main/res/layout/drawer_menu_item.xml b/app/src/main/res/layout/drawer_menu_item.xml index d9e610be..4b8acd65 100644 --- a/app/src/main/res/layout/drawer_menu_item.xml +++ b/app/src/main/res/layout/drawer_menu_item.xml @@ -38,7 +38,7 @@ android:layout_centerVertical="true" android:layout_toRightOf="@+id/icon_container" android:gravity="center_vertical" - android:textColor="#484C4F" + android:textColor="?drawer_item_text_color" android:textSize="14sp" tools:text="@string/text_auto_operate_service"/> diff --git a/app/src/main/res/layout/editor_view.xml b/app/src/main/res/layout/editor_view.xml index 09081cb3..59725602 100644 --- a/app/src/main/res/layout/editor_view.xml +++ b/app/src/main/res/layout/editor_view.xml @@ -15,6 +15,7 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" + android:theme="@style/ToolBarStyle" android:background="?attr/colorPrimary" android:title="@string/_app_name" app:popupTheme="@style/AppTheme.PopupOverlay"> diff --git a/app/src/main/res/layout/fragment_drawer.xml b/app/src/main/res/layout/fragment_drawer.xml index db66ed93..36c2a51d 100644 --- a/app/src/main/res/layout/fragment_drawer.xml +++ b/app/src/main/res/layout/fragment_drawer.xml @@ -1,10 +1,9 @@ + android:background="?android:divider"/> @@ -128,6 +128,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:textColor="?android:textColorPrimary" android:gravity="center" android:text="@string/text_exit" android:textSize="15sp"/> diff --git a/app/src/main/res/layout/fragment_my_script_list.xml b/app/src/main/res/layout/fragment_my_script_list.xml index c965dadd..15d80395 100644 --- a/app/src/main/res/layout/fragment_my_script_list.xml +++ b/app/src/main/res/layout/fragment_my_script_list.xml @@ -1,6 +1,5 @@ diff --git a/app/src/main/res/layout/fragment_normal_toolbar.xml b/app/src/main/res/layout/fragment_normal_toolbar.xml index a5ca5924..cedf1047 100644 --- a/app/src/main/res/layout/fragment_normal_toolbar.xml +++ b/app/src/main/res/layout/fragment_normal_toolbar.xml @@ -11,7 +11,7 @@ android:layout_width="40dp" android:layout_height="match_parent" app:icon="@drawable/ic_play_arrow_white_48dp" - app:icon_color="@android:color/white" + app:icon_color="@color/toolbar" app:text="@string/text_run"/> diff --git a/app/src/main/res/layout/fragment_search_toolbar.xml b/app/src/main/res/layout/fragment_search_toolbar.xml index 7c829637..460e7b93 100644 --- a/app/src/main/res/layout/fragment_search_toolbar.xml +++ b/app/src/main/res/layout/fragment_search_toolbar.xml @@ -11,6 +11,7 @@ android:layout_width="40dp" android:layout_height="match_parent" app:icon="@drawable/ic_ali_replace" + app:icon_color="@color/toolbar" app:text="@string/text_replace"/> @@ -33,6 +36,7 @@ android:layout_width="40dp" android:layout_height="match_parent" app:icon="@drawable/ic_close_white_48dp" + app:icon_color="@color/toolbar" app:text="@string/text_cancel"/> diff --git a/app/src/main/res/layout/fragment_task_manager.xml b/app/src/main/res/layout/fragment_task_manager.xml index 8c03fb7a..efd3f289 100644 --- a/app/src/main/res/layout/fragment_task_manager.xml +++ b/app/src/main/res/layout/fragment_task_manager.xml @@ -1,8 +1,7 @@ + android:layout_height="match_parent"> @@ -17,8 +18,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" - android:paddingBottom="16dp" - android:paddingTop="16dp"> + android:paddingTop="16dp" + android:paddingBottom="16dp"> @@ -49,6 +50,7 @@ android:layout_gravity="center_vertical" android:background="?selectableItemBackgroundBorderless" android:clickable="true" + android:focusable="true" android:paddingLeft="16dp" android:paddingRight="16dp" android:src="@drawable/ic_more_vert_black_24dp" diff --git a/app/src/main/res/layout/script_file_list_file.xml b/app/src/main/res/layout/script_file_list_file.xml index 0e584f9e..1467c6c4 100644 --- a/app/src/main/res/layout/script_file_list_file.xml +++ b/app/src/main/res/layout/script_file_list_file.xml @@ -8,13 +8,13 @@ + android:background="?android:divider"/> @@ -60,7 +60,7 @@ android:ellipsize="end" android:gravity="center_vertical" android:maxLines="1" - android:textColor="#9DA0A2" + android:textColor="?android:textColorSecondary" android:textSize="11sp" tools:text="18 KB"/> @@ -112,7 +112,7 @@ + android:background="?android:divider"/> diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 00000000..05e8113c --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,16 @@ + + + #202020 + #333333 + #252525 + #7F7F80 + #9a9a9a + #808080 + #111214 + #9a9a9a + #808080 + #6D6D6E + #3A3A3C + #8D8D8E + #3A3A3C + \ No newline at end of file diff --git a/app/src/main/res/values-night/styles.xml b/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..ae0ffb69 --- /dev/null +++ b/app/src/main/res/values-night/styles.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 1e78fc7e..7b777c35 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -3,6 +3,9 @@ + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 78f27b1e..71842fdc 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -12,4 +12,21 @@ #f0f0f0 #ef5350 #777777 + #111214 + + #FFFFFF + #FFFFFF + #FFFFFF + @android:color/primary_text_light + #484C4F + #9DA0A2 + #f2f3f5 + #484C4F + #999999 + @android:color/white + #a0ffffff + @android:color/white + #77e0e0e0 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 569bef37..bf1fae88 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -426,4 +426,6 @@ 重命名失败 项目已经保存到%s 项目保存失败 %s + 夜间模式 + key_night_mode diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d20bc30d..3fc789b2 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,10 +1,24 @@ - + @@ -42,7 +53,6 @@ false - - -