diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 79f85100..be026f14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -574,11 +574,15 @@ + + - val isLightColor = ColorUtils.isLuminanceDark(backgroundColor) + val isLightColor = ViewUtils.isLuminanceDark(backgroundColor) ViewUtils.setStatusBarBackgroundColor(this, backgroundColor) ViewUtils.setStatusBarAppearanceLight(this, isLightColor) ViewUtils.setNavigationBarBackgroundColor(this, backgroundColor) diff --git a/app/src/main/java/org/autojs/autojs/inrt/LogActivity.kt b/app/src/main/java/org/autojs/autojs/inrt/LogActivity.kt index 04101173..1f7c4a8c 100644 --- a/app/src/main/java/org/autojs/autojs/inrt/LogActivity.kt +++ b/app/src/main/java/org/autojs/autojs/inrt/LogActivity.kt @@ -14,6 +14,8 @@ import org.autojs.autojs6.databinding.ActivityMainInrtBinding class LogActivity : BaseActivity() { + override val handleStatusBarThemeColorAutomatically = false + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setupView() diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt index 20d8380e..f9162d8c 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/ui/UI.kt @@ -22,6 +22,10 @@ import org.autojs.autojs.extension.AnyExtensions.isJsNullish import org.autojs.autojs.extension.AnyExtensions.jsBrief import org.autojs.autojs.extension.AnyExtensions.jsSanitize import org.autojs.autojs.extension.AnyExtensions.jsUnwrapped +import org.autojs.autojs.extension.FlexibleArray.Companion.component1 +import org.autojs.autojs.extension.FlexibleArray.Companion.component2 +import org.autojs.autojs.extension.FlexibleArray.Companion.component3 +import org.autojs.autojs.extension.FlexibleArray.Companion.component4 import org.autojs.autojs.extension.ScriptableExtensions.defineProp import org.autojs.autojs.extension.ScriptableExtensions.prop import org.autojs.autojs.rhino.ProxyObject.Companion.PROXY_GETTER_KEY @@ -34,7 +38,6 @@ import org.autojs.autojs.runtime.api.augment.colors.Colors import org.autojs.autojs.runtime.api.augment.jsox.Numberx import org.autojs.autojs.runtime.exception.WrappedIllegalArgumentException import org.autojs.autojs.theme.ThemeColor -import org.autojs.autojs.util.ColorUtils import org.autojs.autojs.util.RhinoUtils import org.autojs.autojs.util.RhinoUtils.NOT_CONSTRUCTABLE import org.autojs.autojs.util.RhinoUtils.UNDEFINED @@ -540,7 +543,7 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt fun statusBarAppearanceLightBy(scriptRuntime: ScriptRuntime, args: Array): Undefined = ensureArgumentsOnlyOne(args) { refColor -> ensureActivity(scriptRuntime) { activity -> runRhinoRuntime(scriptRuntime, newBaseFunction("action", { - Colors.toIntRhino(refColor).also { ViewUtils.setStatusBarAppearanceLight(activity, ColorUtils.isLuminanceDark(it)) } + Colors.toIntRhino(refColor).also { ViewUtils.setStatusBarAppearanceLight(activity, ViewUtils.isLuminanceDark(it)) } }, NOT_CONSTRUCTABLE)) } UNDEFINED @@ -595,7 +598,7 @@ class UI(private val scriptRuntime: ScriptRuntime) : AugmentableProxy(scriptRunt if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { ScriptRuntime.requiresApi(Build.VERSION_CODES.O) } else { - ViewUtils.setNavigationBarAppearanceLight(activity, ColorUtils.isLuminanceDark(it)) + ViewUtils.setNavigationBarAppearanceLight(activity, ViewUtils.isLuminanceDark(it)) } } }, NOT_CONSTRUCTABLE)) diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt b/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt index 92e91b96..4e3d3111 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColor.kt @@ -9,7 +9,7 @@ import org.autojs.autojs.core.pref.Pref.getInt import org.autojs.autojs.core.pref.Pref.putInt import org.autojs.autojs.extension.ArrayExtensions.toHashCode import org.autojs.autojs.theme.ThemeColorManager.defaultThemeColor -import org.autojs.autojs.util.ColorUtils +import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R /** @@ -31,9 +31,11 @@ class ThemeColor(@JvmField var colorPrimary: Int, @JvmField var colorPrimaryDark @ScriptInterface fun getColorPrimaryDark() = colorPrimaryDark - fun isLuminanceLight() = ColorUtils.isLuminanceLight(colorPrimary) + @JvmOverloads + fun isLuminanceLight(backgroundColorMatters: Boolean = true) = ThemeColorManager.isLuminanceLight(backgroundColorMatters) - fun isLuminanceDark() = ColorUtils.isLuminanceDark(colorPrimary) + @JvmOverloads + fun isLuminanceDark(backgroundColorMatters: Boolean = true) = !isLuminanceLight(backgroundColorMatters) fun colorPrimary(colorPrimary: Int) = also { this.colorPrimary = colorPrimary } diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java b/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java index c56c926b..def2a5a6 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColorHelper.java @@ -14,10 +14,8 @@ import android.view.Window; import android.view.WindowManager; import android.widget.AbsListView; import android.widget.Switch; - import androidx.appcompat.widget.SwitchCompat; import androidx.core.graphics.drawable.DrawableCompat; - import org.autojs.autojs.theme.internal.ScrollingViewEdgeGlowColorHelper; import org.autojs.autojs.util.ColorUtils; import org.autojs.autojs.util.ViewUtils; @@ -90,8 +88,8 @@ public class ThemeColorHelper { } private static void setThumbDrawableTintList(Drawable drawable, int color) { - int unselectedColor = ColorUtils.isLuminanceLight(color) - ? Color.parseColor("#616161") // R.color.md_grey_700 + int unselectedColor = ViewUtils.isLuminanceLight(color) + ? Color.parseColor("#616161") // R.color.md_gray_700 : Color.DKGRAY; int[] thumbColors = new int[]{ color, diff --git a/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt b/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt index ab96dd4f..bf52dfb1 100644 --- a/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt +++ b/app/src/main/java/org/autojs/autojs/theme/ThemeColorManager.kt @@ -29,12 +29,6 @@ object ThemeColorManager { ThemeColor.fromPreferences()?.let { currentThemeColor = it } ?: setThemeColor(defaultThemeColor) } - @JvmStatic - fun isThemeColorLuminanceLight() = currentThemeColor.isLuminanceLight() - - @JvmStatic - fun isThemeColorLuminanceDark() = currentThemeColor.isLuminanceDark() - @JvmStatic fun add(colorMutable: ThemeColorMutable) = ThemeColorMutableManager.add(colorMutable) @@ -67,10 +61,6 @@ object ThemeColorManager { ThemeColorWidgetReferenceManager.setColor(themeColor) } - /** - * 设置主题色并为记录的状态栏和标题栏改变颜色 - * @param color 主题色RGB值 - */ fun setThemeColor(color: Int) = setThemeColor(ThemeColor(color)) private fun saveThemeColorIfNeeded() { @@ -78,10 +68,31 @@ object ThemeColorManager { } @JvmStatic - fun getDayOrNightColorByLuminance(context: Context): Int = ViewUtils.getDayOrNightColorByLuminance(context, colorPrimary) + @JvmOverloads + fun isLuminanceLight(backgroundColorMatters: Boolean = true): Boolean { + return ViewUtils.isLuminanceLight(colorPrimary, backgroundColorMatters) + } @JvmStatic - fun getDayOrNightColorResByLuminance(): Int = ViewUtils.getDayOrNightColorResByLuminance(colorPrimary) + @JvmOverloads + fun isLuminanceDark(backgroundColorMatters: Boolean = true): Boolean { + return ViewUtils.isLuminanceDark(colorPrimary, backgroundColorMatters) + } + + @JvmStatic + fun getDayOrNightColorByLuminance(context: Context): Int { + return ViewUtils.getDayOrNightColorByLuminance(context, colorPrimary) + } + + @JvmStatic + fun getDayOrNightColorResByLuminance(): Int { + return ViewUtils.getDayOrNightColorResByLuminance(colorPrimary) + } + + @JvmStatic + fun setStatusBarBackgroundColor(activity: Activity) { + ViewUtils.setStatusBarBackgroundColor(activity, colorPrimary) + } private object BackgroundColorManager { @@ -105,7 +116,7 @@ object ThemeColorManager { fun add(activity: Activity) { activityRefs.add(WeakReference(activity)) - ViewUtils.setStatusBarBackgroundColor(activity, currentThemeColor.colorPrimary) + setStatusBarBackgroundColor(activity) } fun setColor(color: Int) { diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt new file mode 100644 index 00000000..9cb5e567 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibrariesActivity.kt @@ -0,0 +1,322 @@ +package org.autojs.autojs.theme.app + +import android.annotation.SuppressLint +import android.content.Intent +import android.content.res.ColorStateList +import android.os.Bundle +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import android.widget.Toast +import androidx.appcompat.widget.SearchView +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.VERTICAL +import com.jaredrummler.android.colorpicker.ColorPickerDialog +import org.autojs.autojs.core.image.ColorItems +import org.autojs.autojs.core.pref.Pref +import org.autojs.autojs.theme.ThemeChangeNotifier +import org.autojs.autojs.theme.ThemeColorManager +import org.autojs.autojs.util.ColorUtils +import org.autojs.autojs.util.ViewUtils +import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance +import org.autojs.autojs6.R +import org.autojs.autojs6.databinding.MtActivityColorLibrariesBinding + +@SuppressLint("NotifyDataSetChanged") +class ColorLibrariesActivity : ColorSelectBaseActivity() { + + private lateinit var binding: MtActivityColorLibrariesBinding + + private lateinit var mAdapter: ColorLibraryAdapter + + private val customColor: Int + get() = Pref.getInt(KEY_CUSTOM_COLOR, getColor(R.color.custom_color_default)) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + ThemeChangeNotifier.themeChanged.observe(this) { + setColor(ThemeColorManager.colorPrimary) + mAdapter.notifyDataSetChanged() + } + + MtActivityColorLibrariesBinding.inflate(layoutInflater).let { + binding = it + setContentView(it.root) + setUpToolbar(it.toolbar) + setUpAppBar(it.appBar, it.appBarContainer) + } + + binding.colorLibrariesRecyclerView.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = ColorLibraryAdapter(colorLibraries) { library -> + val intent = Intent(this, ColorLibraryActivity::class.java) + intent.putExtra("LIBRARY_ID", library.id) + startActivity(intent) + }.also { mAdapter = it } + it.addItemDecoration(DividerItemDecoration(this, VERTICAL)) + ViewUtils.excludePaddingClippableViewFromNavigationBar(it) + } + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_color_libraries, menu) + + binding.toolbar.setMenuIconsColorByColorLuminance(this, currentColor) + + val searchItem = menu.findItem(R.id.action_search_color) + val searchView = searchItem.actionView as? SearchView + searchView?.queryHint = "搜索颜色库" + searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String?): Boolean { + filterLibraries(query) + return true + } + + override fun onQueryTextChange(newText: String?): Boolean { + filterLibraries(newText) + return true + } + }) + return true + } + + private fun filterLibraries(query: String?) { + val filteredLibraries = when { + query.isNullOrBlank() -> colorLibraries + else -> colorLibraries.filter { + val name = it.nameString ?: getString(it.nameRes) + name.contains(query, ignoreCase = true) + } + } + mAdapter.updateData(filteredLibraries) + } + + // 定位功能可以通过工具栏中的 "action_locate_current_theme_color" 按钮实现, + // 按钮点击后找到包含当前主题色的颜色库在列表中的位置, + // 然后调用 RecyclerView 的 scrollToPosition() 方法跳转到该项 + + override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { + R.id.action_color_palette -> { + showColorPicker() + true + } + R.id.action_search_color -> { + ViewUtils.showToast(this, R.string.text_under_development_title) + true + } + R.id.action_new_color_library -> { + ViewUtils.showToast(this, R.string.text_under_development_title) + true + } + R.id.action_locate_current_theme_color -> { + locateCurrentThemeColor() + true + } + R.id.action_toggle_color_select_layout -> { + isLegacyLayout = true + startActivity(this) + true + } + else -> super.onOptionsItemSelected(item) + } + + private fun showColorPicker() { + ColorPickerDialog.newBuilder() + .setAllowCustom(true) + .setAllowPresets(true) + .setDialogType(ColorPickerDialog.TYPE_CUSTOM) + .setShowAlphaSlider(false) + .setDialogTitle(R.string.dialog_title_color_palette) + .setColor(customColor) + .create() + .setColorPickerDialogListener { dialogId: Int, color: Int -> + savePrefsForLibraries() + savePrefsForLegacy(color) + + binding.toolbar.post { binding.toolbar.subtitle = getCurrentColorSummary(this, true) } + + setColorWithAnimation(color) + + ThemeColorManager.setThemeColor(color) + ThemeChangeNotifier.notifyThemeChanged() + } + .show(supportFragmentManager, "ColorPickerTagForColorLibraries") + } + + private fun savePrefsForLibraries() { + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_CUSTOM_COLOR_ID) + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, 0) + } + + private fun savePrefsForLegacy(color: Int) { + Pref.putInt(KEY_CUSTOM_COLOR, color or -0x1000000) + Pref.putInt(KEY_SELECTED_COLOR_INDEX, customColorPosition) + } + + + private fun locateCurrentThemeColor() { + // 假设当前主题颜色保存在 ThemeColorManager 中,可以通过它查找对应颜色库 + val currentColor = ThemeColorManager.colorPrimary + // 简单示例:遍历 colorLibraries,找到第一个包含该颜色的库 + val targetIndex = colorLibraries.indexOfFirst { library -> + library.colors.any { colorItem -> + getColor(colorItem.colorRes) == currentColor + } + } + if (targetIndex >= 0) { + val recyclerView: RecyclerView = findViewById(R.id.color_libraries_recycler_view) + recyclerView.smoothScrollToPosition(targetIndex) + } else { + Toast.makeText(this, "未找到当前颜色所在的颜色库", Toast.LENGTH_SHORT).show() + } + } + + override fun getSubtitle() = getCurrentColorSummary(this) + + inner class ColorLibraryAdapter( + private var libraries: List, + private val onItemClick: (ColorLibrary) -> Unit, + ) : RecyclerView.Adapter() { + + // 当上层需要搜索过滤时调用该方法更新数据 + fun updateData(newLibraries: List) { + libraries = newLibraries + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LibraryViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.mt_color_libraries_recycler_view_item, parent, false) + return LibraryViewHolder(view) + } + + override fun onBindViewHolder(holder: LibraryViewHolder, position: Int) { + val library = libraries[position] + holder.bind(library) + holder.itemView.setOnClickListener { onItemClick(library) } + } + + override fun getItemCount() = libraries.size + + } + + inner class LibraryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + private val colorItemView: ImageView = itemView.findViewById(R.id.library_item) + private val libraryName: TextView = itemView.findViewById(R.id.name) + private val description: TextView = itemView.findViewById(R.id.description) + + fun bind(library: ColorLibrary) { + libraryName.text = library.nameString ?: getString(library.nameRes) + + val size = library.colors.size + description.text = resources.getQuantityString(R.plurals.text_items_total_sum, size, size) + + val adjustedContrastColor = ColorUtils.adjustColorForContrast(getColor(R.color.window_background), ThemeColorManager.colorPrimary, 2.3) + when { + library.id == COLOR_LIBRARY_DEFAULT_COLORS_ID -> { + colorItemView.setImageResource(R.drawable.ic_color_library_default) + } + !library.isUserDefined -> { + colorItemView.setImageResource(R.drawable.ic_color_library_preset) + } + } + colorItemView.imageTintList = ColorStateList.valueOf(adjustedContrastColor) + } + + } + + companion object { + + const val COLOR_LIBRARY_CUSTOM_COLOR_ID = 0x10001 + + const val COLOR_LIBRARY_DEFAULT_COLORS_ID = 0x20001 + const val COLOR_LIBRARY_MATERIAL_COLORS_ID = 0x20002 + const val COLOR_LIBRARY_ANDROID_COLORS_ID = 0x20003 + const val COLOR_LIBRARY_CSS_COLORS_ID = 0x20004 + const val COLOR_LIBRARY_WEB_COLORS_ID = 0x20005 + + val colorLibraries by lazy { + listOf( + ColorLibrary( + id = COLOR_LIBRARY_DEFAULT_COLORS_ID, + nameRes = R.string.color_library_default_colors, + titleRes = R.string.color_library_title_default_colors, + identifierRes = R.string.color_library_identifier_default_colors, + colors = listOf( + R.color.md_teal_800 to R.string.md_teal_800, + R.color.md_blue_gray_800 to R.string.md_blue_gray_800, + R.color.window_background_light to R.string.window_background_light, + R.color.window_background_night to R.string.window_background_night, + ).mapIndexed { index, (colorRes, nameRes) -> + ColorItem(index, colorRes, nameRes) + }, + ), + ColorLibrary( + id = COLOR_LIBRARY_MATERIAL_COLORS_ID, + nameRes = R.string.color_library_material_design_colors, + titleRes = R.string.color_library_title_material_design_colors, + identifierRes = R.string.color_library_identifier_material_design_colors, + colors = ColorItems.MATERIAL_COLORS.mapIndexed { index, (colorRes, nameRes) -> + ColorItem(index, colorRes, nameRes) + }, + ), + ColorLibrary( + id = COLOR_LIBRARY_ANDROID_COLORS_ID, + nameRes = R.string.color_library_android_colors, + titleRes = R.string.color_library_title_android_colors, + identifierRes = R.string.color_library_identifier_android_colors, + colors = ColorItems.ANDROID_COLORS.mapIndexed { index, (colorRes, nameRes) -> + ColorItem(index, colorRes, nameRes) + }, + ), + ColorLibrary( + id = COLOR_LIBRARY_CSS_COLORS_ID, + nameRes = R.string.color_library_css_colors, + titleRes = R.string.color_library_title_css_colors, + identifierRes = R.string.color_library_identifier_css_colors, + colors = ColorItems.CSS_COLORS.mapIndexed { index, (colorRes, nameRes) -> + ColorItem(index, colorRes, nameRes) + }, + ), + ColorLibrary( + id = COLOR_LIBRARY_WEB_COLORS_ID, + nameRes = R.string.color_library_web_colors, + titleRes = R.string.color_library_title_web_colors, + identifierRes = R.string.color_library_identifier_web_colors, + colors = ColorItems.WEB_COLORS.mapIndexed { index, (colorRes, nameRes) -> + ColorItem(index, colorRes, nameRes) + }, + ), + ) + } + + data class ColorItem( + val id: Int, + val colorRes: Int = R.color.md_black_1000, + val nameRes: Int = R.string.text_unknown, + val colorInt: Int? = null, + val nameString: String? = null, + ) + + data class ColorLibrary( + val id: Int, + val nameRes: Int = R.string.text_color_library, + val titleRes: Int? = null, + val identifierRes: Int? = null, + val nameString: String? = null, + val titleString: String? = null, + val colors: List = emptyList(), + var isUserDefined: Boolean = false, + ) + + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryActivity.kt new file mode 100644 index 00000000..4064c7df --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorLibraryActivity.kt @@ -0,0 +1,257 @@ +package org.autojs.autojs.theme.app + +import android.annotation.SuppressLint +import android.content.res.ColorStateList +import android.os.Bundle +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.annotation.ColorInt +import androidx.appcompat.widget.SearchView +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.VERTICAL +import org.autojs.autojs.core.image.ColorItems +import org.autojs.autojs.core.pref.Pref +import org.autojs.autojs.theme.ThemeChangeNotifier +import org.autojs.autojs.theme.ThemeColorHelper +import org.autojs.autojs.theme.ThemeColorManager +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_DEFAULT_COLORS_ID +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_MATERIAL_COLORS_ID +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.ColorItem +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.ColorLibrary +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.colorLibraries +import org.autojs.autojs.util.ViewUtils +import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance +import org.autojs.autojs6.R +import org.autojs.autojs6.databinding.MtActivityColorLibraryBinding + +@SuppressLint("NotifyDataSetChanged") +class ColorLibraryActivity : ColorSelectBaseActivity() { + + private lateinit var binding: MtActivityColorLibraryBinding + + private lateinit var mAdapter: ColorItemAdapter + private lateinit var mLibrary: ColorLibrary + + private var mSelectedPosition = SELECT_NONE + private var mSelectedColor: Int? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val libraryId = intent.getIntExtra("LIBRARY_ID", -1) + val library = colorLibraries.find { it.id == libraryId }?.also { lib -> + mLibrary = lib + } ?: throw RuntimeException("Unknown library id: $libraryId") + + MtActivityColorLibraryBinding.inflate(layoutInflater).let { + binding = it + setContentView(it.root) + setUpToolbar(it.toolbar) + setUpAppBar(it.appBar, it.appBarContainer) + it.toolbar.title = library.let { + it.titleString + ?: it.titleRes?.let { resId -> getString(resId) } + ?: it.nameString + ?: getString(it.nameRes) + } + if (library.id == Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE)) { + it.toolbar.subtitle = getCurrentColorSummary(this, true) + } + } + + binding.colorLibraryRecyclerView.let { it -> + it.layoutManager = LinearLayoutManager(this) + it.adapter = ColorItemAdapter(library.colors) { colorItem, itemView -> + savePrefsForLibraries(library, colorItem) + savePrefsForLegacy(library, colorItem) + + it.post { binding.toolbar.subtitle = getCurrentColorSummary(this, true) } + + val selectedColor = getColor(colorItem.colorRes).also { mSelectedColor = it } + setColorWithAnimation(selectedColor) + + val adapter = it.adapter as ColorItemAdapter + val currentPosition = it.getChildViewHolder(itemView).bindingAdapterPosition + if (mSelectedPosition != SELECT_NONE) { + adapter.notifyItemChanged(mSelectedPosition) + mSelectedPosition = currentPosition + adapter.notifyItemChanged(currentPosition) + } else { + mSelectedPosition = currentPosition + adapter.notifyDataSetChanged() + } + + ThemeColorManager.setThemeColor(selectedColor) + ThemeChangeNotifier.notifyThemeChanged() + }.also { mAdapter = it } + it.addItemDecoration(DividerItemDecoration(this, VERTICAL)) + ViewUtils.excludePaddingClippableViewFromNavigationBar(it) + setUpSelectedPosition() + } + } + + private fun setUpSelectedPosition() { + when (Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE)) { + SELECT_NONE -> when (val legacyIndex = Pref.getInt(KEY_SELECTED_COLOR_INDEX, SELECT_NONE)) { + customColorPosition -> Unit + SELECT_NONE, defaultColorPosition -> when (mLibrary.id) { + COLOR_LIBRARY_DEFAULT_COLORS_ID -> { + val index = mLibrary.colors.indexOfFirst { getColor(it.colorRes) == getColor(R.color.theme_color_default) } + if (index >= 0) mSelectedPosition = index + } + } + else -> when (val calculatedIndex = legacyIndex - maxOf(customColorPosition, defaultColorPosition) - 1) { + in ColorItems.MATERIAL_COLORS.indices -> { + val (colorRes, _) = ColorItems.MATERIAL_COLORS[calculatedIndex] + val index = mLibrary.colors.indexOfFirst { it.colorRes == colorRes } + if (index >= 0) mSelectedPosition = index + } + } + } + mLibrary.id -> { + val libraryItemId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, SELECT_NONE) + mSelectedPosition = mLibrary.colors.indexOfFirst { it.id == libraryItemId }.takeIf { it != SELECT_NONE } ?: SELECT_NONE + } + } + } + + private fun savePrefsForLibraries(library: ColorLibrary?, colorItem: ColorItem) { + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, library?.id ?: -1) + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, colorItem.id) + } + + private fun savePrefsForLegacy(library: ColorLibrary?, colorItem: ColorItem) { + when (library?.id) { + COLOR_LIBRARY_DEFAULT_COLORS_ID -> { + if (getColor(colorItem.colorRes) == getColor(R.color.theme_color_default)) { + Pref.putInt(KEY_SELECTED_COLOR_INDEX, defaultColorPosition) + } else { + Pref.putInt(KEY_SELECTED_COLOR_INDEX, SELECT_NONE) + } + } + COLOR_LIBRARY_MATERIAL_COLORS_ID -> { + val index = colorItem.id + if (index !in ColorItems.MATERIAL_COLORS.indices) { + Pref.putInt(KEY_SELECTED_COLOR_INDEX, SELECT_NONE) + } else { + val fixedIndex = maxOf( + defaultColorPosition, + customColorPosition, + ) + 1 + index + Pref.putInt(KEY_SELECTED_COLOR_INDEX, fixedIndex) + } + } + else -> { + Pref.putInt(KEY_SELECTED_COLOR_INDEX, SELECT_NONE) + } + } + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.menu_color_library, menu) + + binding.toolbar.setMenuIconsColorByColorLuminance(this, currentColor) + + val searchItem = menu.findItem(R.id.action_search_color) + val searchView = searchItem.actionView as? SearchView + searchView?.queryHint = "搜索颜色" + searchView?.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String?): Boolean { + filterColors(query) + return true + } + + override fun onQueryTextChange(newText: String?): Boolean { + filterColors(newText) + return true + } + }) + return true + } + + private fun filterColors(@Suppress("unused") query: String?) { + // if (library == null) return + // val filteredColors = if (query.isNullOrBlank()) { + // library!!.colors + // } else { + // library!!.colors.filter { colorItem -> + // // 假设可以通过资源 id 获取对应的字符串显示,再做匹配 + // val name = getString(colorItem.nameRes) + // name.contains(query, ignoreCase = true) + // } + // } + // adapter.updateData(filteredColors) + } + + override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) { + R.id.action_search_color -> { + ViewUtils.showToast(this, R.string.text_under_development_title) + true + } + R.id.action_locate_current_theme_color -> { + // locateCurrentColorLibrary() + true + } + else -> super.onOptionsItemSelected(item) + } + + inner class ColorItemAdapter( + private var items: List, + private val onItemClick: (ColorItem, View) -> Unit, + ) : RecyclerView.Adapter() { + + fun updateData(newItems: List) { + items = newItems + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColorViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.mt_color_library_recycler_view_item, parent, false) + return ColorViewHolder(view) + } + + override fun onBindViewHolder(holder: ColorViewHolder, position: Int) { + val item = items[position] + holder.bind(item, position) + holder.itemView.setOnClickListener { onItemClick(item, holder.itemView) } + } + + override fun getItemCount() = items.size + + } + + inner class ColorViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + private val colorView: ImageView = itemView.findViewById(R.id.color) + private val nameView: TextView = itemView.findViewById(R.id.name) + private val descView: TextView = itemView.findViewById(R.id.description) + + fun bind(item: ColorItem, position: Int) { + val color = getColor(item.colorRes) + ThemeColorHelper.setBackgroundColor(colorView, color) + nameView.text = item.nameString ?: getString(item.nameRes) + descView.text = String.format("#%06X", 0xFFFFFF and color) + setChecked(color, mSelectedPosition == position) + } + + fun setChecked(@ColorInt color: Int, checked: Boolean) { + if (checked) { + colorView.setImageResource(R.drawable.mt_ic_check_white_36dp) + val tintRes = if (ViewUtils.isLuminanceLight(color)) R.color.day else R.color.night + colorView.imageTintList = ColorStateList.valueOf(getColor(tintRes)) + } else { + colorView.setImageDrawable(null) + } + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt index 96f47b64..19f38887 100644 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectActivity.kt @@ -4,10 +4,6 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View -import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.theme.ThemeChangeNotifier -import org.autojs.autojs.theme.ThemeColorManager -import org.autojs.autojs.util.StringUtils.key import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R import org.autojs.autojs6.databinding.MtActivityColorSelectBinding @@ -21,9 +17,12 @@ class ColorSelectActivity : ColorSelectBaseActivity() { private lateinit var mColorSettingRecyclerView: ColorSettingRecyclerView + private var mSelectedPosition = SELECT_NONE + private val mOnItemClickListener = object : OnItemClickListener { override fun onItemClick(v: View?, position: Int) { mColorSettingRecyclerView.selectedThemeColor?.let { + mSelectedPosition = position setColorWithAnimation(it.colorPrimary) } } @@ -31,7 +30,7 @@ class ColorSelectActivity : ColorSelectBaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - MtActivityColorSelectBinding.inflate(layoutInflater).also { + MtActivityColorSelectBinding.inflate(layoutInflater).let { binding = it setContentView(it.root) setUpToolbar(it.toolbar) @@ -42,21 +41,12 @@ class ColorSelectActivity : ColorSelectBaseActivity() { private fun setUpColorSettingRecyclerView(colorSettingRecyclerView: ColorSettingRecyclerView) { mColorSettingRecyclerView = colorSettingRecyclerView.apply { - setSelectedColor(currentColor) + setUpSelectedPosition(currentColor) setOnItemClickListener(mOnItemClickListener) ViewUtils.excludePaddingClippableViewFromNavigationBar(this) } } - override fun finish() { - mColorSettingRecyclerView.selectedThemeColor?.let { - ThemeColorManager.setThemeColor(it.colorPrimary) - Pref.putString(key(R.string.key_theme_color), getCurrentColorSummary(this)) - ThemeChangeNotifier.notifyThemeChanged() - } - super.finish() - } - override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_color_select, menu) return super.onCreateOptionsMenu(menu) @@ -64,26 +54,12 @@ class ColorSelectActivity : ColorSelectBaseActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.action_color_palette -> { - ViewUtils.showToast(this, R.string.text_under_development_title) - } - R.id.action_search_color -> { - ViewUtils.showToast(this, R.string.text_under_development_title) - } - R.id.action_new_color_library -> { - ViewUtils.showToast(this, R.string.text_under_development_title) - } - R.id.action_locate_current_color -> { - ViewUtils.showToast(this, R.string.text_under_development_title) - } R.id.action_toggle_color_select_layout -> { - isLegacyLayout = true + isLegacyLayout = false startActivity(this) } } return true } - override fun getSubtitle() = getCurrentColorSummary(this) - } \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt index 0897b505..fe97f2d6 100644 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectBaseActivity.kt @@ -11,8 +11,9 @@ import com.google.android.material.appbar.AppBarLayout import io.codetail.widget.RevealFrameLayout import org.autojs.autojs.core.image.ColorItems import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.theme.ThemeColor import org.autojs.autojs.theme.ThemeColorManager +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_CUSTOM_COLOR_ID +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.colorLibraries import org.autojs.autojs.ui.BaseActivity import org.autojs.autojs.util.ColorUtils import org.autojs.autojs.util.ViewUtils @@ -59,10 +60,6 @@ abstract class ColorSelectBaseActivity : BaseActivity() { supportActionBar?.setDisplayHomeAsUpEnabled(true) } - protected fun finishWithoutSaving() { - super.finish() - } - protected open fun getSubtitle(): String? = null override fun initThemeColors() { @@ -82,36 +79,34 @@ abstract class ColorSelectBaseActivity : BaseActivity() { } protected fun setColorWithAnimation(colorTo: Int) { - val view = mAppBarLayout - mAppBarContainer.setBackgroundColor(currentColor) - view.setBackgroundColor(colorTo) - currentColor = colorTo - - initThemeColors() - updateToolbarIconsColor() - mToolbar.subtitle = getSubtitle() - + setColor(colorTo) ViewAnimationUtils.createCircularReveal( - /* view = */ view, - /* centerX = */ view.left, - /* centerY = */ view.bottom, + /* view = */ mAppBarLayout, + /* centerX = */ mAppBarLayout.left, + /* centerY = */ mAppBarLayout.bottom, /* startRadius = */ 0f, - /* endRadius = */ hypot(view.width.toDouble(), view.height.toDouble()).toFloat(), + /* endRadius = */ hypot(mAppBarLayout.width.toDouble(), mAppBarLayout.height.toDouble()).toFloat(), ).apply { duration = 500L start() } } + protected fun setColor(colorTo: Int) { + mAppBarContainer.setBackgroundColor(currentColor) + mAppBarLayout.setBackgroundColor(colorTo) + currentColor = colorTo + + initThemeColors() + updateToolbarIconsColor() + mToolbar.subtitle = getSubtitle() + } + protected fun setUpAppBar(appBar: AppBarLayout, appBarContainer: RevealFrameLayout) { mAppBarLayout = appBar.apply { setBackgroundColor(currentColor) } mAppBarContainer = appBarContainer } - class ColorItem(var name: String, var themeColor: ThemeColor) { - constructor(name: String, color: Int) : this(name, ThemeColor(color)) - } - interface OnItemClickListener { fun onItemClick(v: View?, position: Int) } @@ -122,11 +117,13 @@ abstract class ColorSelectBaseActivity : BaseActivity() { val KEY_CUSTOM_COLOR = "${ColorSettingRecyclerView::class.java.name}.COLOR_SETTING_CUSTOM_COLOR" val KEY_SELECTED_COLOR_INDEX = "${ColorSettingRecyclerView::class.java.name}.SELECTED_COLOR_INDEX" + val KEY_SELECTED_COLOR_LIBRARY_ID = "${ColorSettingRecyclerView::class.java.name}.SELECTED_COLOR_LIBRARY_ID" + val KEY_SELECTED_COLOR_LIBRARY_ITEM_ID = "${ColorSettingRecyclerView::class.java.name}.SELECTED_COLOR_LIBRARY_ITEM_ID" val customColorPosition: Int get() = /* return mColors.size() - 1; */ 0 - private val defaultColorPosition: Int + val defaultColorPosition: Int get() = customColorPosition + 1 var isLegacyLayout: Boolean @@ -135,7 +132,7 @@ abstract class ColorSelectBaseActivity : BaseActivity() { val colorItems by lazy { mutableListOf>().apply { - add(customColorPosition, 0 to R.string.mt_custom) + add(customColorPosition, R.color.custom_color_default to R.string.mt_custom) add(defaultColorPosition, R.color.theme_color_default to R.string.theme_color_default) addAll(ColorItems.MATERIAL_COLORS) } @@ -144,8 +141,8 @@ abstract class ColorSelectBaseActivity : BaseActivity() { @JvmStatic fun startActivity(context: Context) { val cls = when (isLegacyLayout) { - true -> ColorSelectLegacyActivity::class.java - else -> ColorSelectActivity::class.java + true -> ColorSelectActivity::class.java + else -> ColorLibrariesActivity::class.java } val titleRes = when (isLegacyLayout) { true -> R.string.mt_color_picker_title @@ -156,22 +153,80 @@ abstract class ColorSelectBaseActivity : BaseActivity() { } if (context is ColorSelectBaseActivity) { intent.putExtra("currentColor", context.currentColor) - context.finishWithoutSaving() + context.finish() } context.startActivity(intent) } @JvmStatic - fun getCurrentColorSummary(context: Context): String { - val index = Pref.getInt(KEY_SELECTED_COLOR_INDEX, defaultColorPosition) - val colorItem = colorItems[index] - val (colorRes, nameRes) = colorItem - val name = context.getString(nameRes) - val colorInt = when (index) { - customColorPosition -> Pref.getInt(KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800)) - else -> context.getColor(colorRes) + fun getCurrentColorSummary(context: Context, isBrief: Boolean = false): String = when { + isLegacyLayout -> when (val index = Pref.getInt(KEY_SELECTED_COLOR_INDEX, defaultColorPosition)) { + SELECT_NONE -> { + val colorInt = ThemeColorManager.colorPrimary + ColorUtils.toString(colorInt).uppercase() + } + else -> { + val colorItem = colorItems[index] + val (colorRes, nameRes) = colorItem + val name = context.getString(nameRes) + val colorInt = when (index) { + customColorPosition -> Pref.getInt(KEY_CUSTOM_COLOR, context.getColor(R.color.custom_color_default)) + else -> context.getColor(colorRes) + } + "$name [${ColorUtils.toString(colorInt).uppercase()}]" + } + } + else -> { + var identifier: String? = null + var colorName: String? = null + val colorInt = ThemeColorManager.colorPrimary + val libraryId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ID, SELECT_NONE) + val libraryItemId = Pref.getInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, SELECT_NONE) + when (libraryId) { + COLOR_LIBRARY_CUSTOM_COLOR_ID -> { + identifier = context.getString(R.string.mt_custom) + } + SELECT_NONE -> { + val legacyIndex = Pref.getInt(KEY_SELECTED_COLOR_INDEX, SELECT_NONE) + when (legacyIndex) { + customColorPosition -> identifier = context.getString(R.string.color_library_identifier_custom) + SELECT_NONE, defaultColorPosition -> identifier = context.getString(R.string.color_library_identifier_default_colors) + else -> { + val calculatedIndex = legacyIndex - maxOf(customColorPosition, defaultColorPosition) - 1 + if (calculatedIndex in ColorItems.MATERIAL_COLORS.indices) { + val (_, nameRes) = ColorItems.MATERIAL_COLORS[calculatedIndex] + identifier = context.getString(R.string.color_library_identifier_material_design_colors) + colorName = context.getString(nameRes) + } + } + } + } + else -> colorLibraries.find { it.id == libraryId }?.let { lib -> + identifier = when { + lib.isUserDefined -> context.getString(R.string.color_library_identifier_custom) + else -> lib.identifierRes?.let { resId -> context.getString(resId) } + } + if (libraryItemId != -1) { + lib.colors.find { it.id == libraryItemId }?.let { item -> + colorName = item.nameString + ?: item.nameRes.takeUnless { + it == R.string.text_unknown + }?.let { context.getString(it) } + } + } + } + } + val colorString = ColorUtils.toString(colorInt).uppercase() + when { + identifier != null && colorName != null -> when { + isBrief -> "$colorName [$colorString]" + else -> "$identifier | $colorName [$colorString]" + } + identifier != null -> "$identifier | $colorString" + colorName != null -> "$colorName [$colorString]" + else -> colorString + } } - return "$name [${ColorUtils.toString(colorInt).uppercase()}]" } } diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectLegacyActivity.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectLegacyActivity.kt deleted file mode 100644 index 69f0498e..00000000 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSelectLegacyActivity.kt +++ /dev/null @@ -1,75 +0,0 @@ -package org.autojs.autojs.theme.app - -import android.os.Bundle -import android.view.Menu -import android.view.MenuItem -import android.view.View -import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.theme.ThemeChangeNotifier -import org.autojs.autojs.theme.ThemeColorManager -import org.autojs.autojs.util.StringUtils.key -import org.autojs.autojs.util.ViewUtils -import org.autojs.autojs6.R -import org.autojs.autojs6.databinding.MtActivityColorSelectLegacyBinding - -/** - * Created by SuperMonster003 on Mar 20, 2025. - */ -class ColorSelectLegacyActivity : ColorSelectBaseActivity() { - - private lateinit var binding: MtActivityColorSelectLegacyBinding - - private lateinit var mColorSettingRecyclerView: ColorSettingRecyclerViewLegacy - - private val mOnItemClickListener = object : OnItemClickListener { - override fun onItemClick(v: View?, position: Int) { - mColorSettingRecyclerView.selectedThemeColor?.let { - setColorWithAnimation(it.colorPrimary) - } - } - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - MtActivityColorSelectLegacyBinding.inflate(layoutInflater).also { - binding = it - setContentView(it.root) - setUpToolbar(it.toolbar) - setUpColorSettingRecyclerView(it.colorSettingRecyclerView) - setUpAppBar(it.appBar, it.appBarContainer) - } - } - - private fun setUpColorSettingRecyclerView(colorSettingRecyclerView: ColorSettingRecyclerViewLegacy) { - mColorSettingRecyclerView = colorSettingRecyclerView.apply { - setSelectedColor(currentColor) - setOnItemClickListener(mOnItemClickListener) - ViewUtils.excludePaddingClippableViewFromNavigationBar(this) - } - } - - override fun finish() { - mColorSettingRecyclerView.selectedThemeColor?.let { - ThemeColorManager.setThemeColor(it.colorPrimary) - Pref.putString(key(R.string.key_theme_color), getCurrentColorSummary(this)) - ThemeChangeNotifier.notifyThemeChanged() - } - super.finish() - } - - override fun onCreateOptionsMenu(menu: Menu): Boolean { - menuInflater.inflate(R.menu.menu_color_select_legacy, menu) - return super.onCreateOptionsMenu(menu) - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - R.id.action_toggle_color_select_layout -> { - isLegacyLayout = false - startActivity(this) - } - } - return true - } - -} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt index 65eac1fe..956f8208 100644 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt +++ b/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerView.kt @@ -9,16 +9,29 @@ import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView +import androidx.fragment.app.FragmentActivity import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.ThemeColorRecyclerView import com.jaredrummler.android.colorpicker.ColorPickerDialog import org.autojs.autojs.core.pref.Pref +import org.autojs.autojs.theme.ThemeChangeNotifier import org.autojs.autojs.theme.ThemeColor import org.autojs.autojs.theme.ThemeColorHelper +import org.autojs.autojs.theme.ThemeColorManager +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_CUSTOM_COLOR_ID +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_DEFAULT_COLORS_ID +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.COLOR_LIBRARY_MATERIAL_COLORS_ID +import org.autojs.autojs.theme.app.ColorLibrariesActivity.Companion.colorLibraries +import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_INDEX +import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_LIBRARY_ID +import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.KEY_SELECTED_COLOR_LIBRARY_ITEM_ID +import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.SELECT_NONE +import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.colorItems import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.customColorPosition -import org.autojs.autojs.util.ColorUtils +import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.defaultColorPosition +import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R class ColorSettingRecyclerView : ThemeColorRecyclerView { @@ -31,17 +44,17 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { private var mOnItemClickListener: ColorSelectBaseActivity.OnItemClickListener? = null - private var mSelectedPosition = ColorSelectBaseActivity.SELECT_NONE + private var mSelectedPosition = SELECT_NONE val selectedThemeColor: ThemeColor? get() = when { mSelectedPosition < 0 -> null mSelectedPosition == customColorPosition -> customColor - else -> context.getColor(ColorSelectBaseActivity.colorItems[mSelectedPosition].first) + else -> context.getColor(colorItems[mSelectedPosition].first) }?.let { ThemeColor(it) } private val customColor: Int - get() = Pref.getInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800)) + get() = Pref.getInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, context.getColor(R.color.custom_color_default)) private val mActualOnItemClickListener = OnClickListener { v -> getChildViewHolder(v)?.let { holder -> @@ -63,7 +76,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { @SuppressLint("NotifyDataSetChanged") fun setSelectedPosition(currentPosition: Int) { - if (mSelectedPosition != ColorSelectBaseActivity.SELECT_NONE) { + if (mSelectedPosition != SELECT_NONE) { adapter!!.notifyItemChanged(mSelectedPosition) mSelectedPosition = currentPosition adapter!!.notifyItemChanged(currentPosition) @@ -71,21 +84,53 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { mSelectedPosition = currentPosition adapter!!.notifyDataSetChanged() } - Pref.putInt(ColorSelectBaseActivity.KEY_SELECTED_COLOR_INDEX, mSelectedPosition) + savePrefsForLegacy() + savePrefsForLibraries() + selectedThemeColor?.let { + ThemeColorManager.setThemeColor(it.colorPrimary) + ThemeChangeNotifier.notifyThemeChanged() + } } - fun setSelectedColor(colorPrimary: Int) { - for ((i, colorItem) in ColorSelectBaseActivity.colorItems.withIndex()) { - val color = when (i) { - customColorPosition -> customColor - else -> context.getColor(colorItem.first) + private fun savePrefsForLegacy() { + Pref.putInt(KEY_SELECTED_COLOR_INDEX, mSelectedPosition) + } + + private fun savePrefsForLibraries() { + when (mSelectedPosition) { + 0 -> { + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_CUSTOM_COLOR_ID) + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, 0) } - if (color == colorPrimary) { - setSelectedPosition(i) - return + 1 -> { + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_DEFAULT_COLORS_ID) + colorLibraries.find { it.id == COLOR_LIBRARY_DEFAULT_COLORS_ID }!!.colors.find { colorItem -> + context.getColor(colorItem.colorRes) == context.getColor(R.color.theme_color_default) + }?.let { Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, it.id) } + } + else -> { + selectedThemeColor?.colorPrimary?.let { c -> + colorLibraries.find { it.id == COLOR_LIBRARY_MATERIAL_COLORS_ID }!!.colors.find { colorItem -> + context.getColor(colorItem.colorRes) == c + }?.let { + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ID, COLOR_LIBRARY_MATERIAL_COLORS_ID) + Pref.putInt(KEY_SELECTED_COLOR_LIBRARY_ITEM_ID, it.id) + } + } } } - mSelectedPosition = ColorSelectBaseActivity.SELECT_NONE + } + + fun setUpSelectedPosition(currentColor: Int) { + val selectedIndex = Pref.getInt(KEY_SELECTED_COLOR_INDEX, SELECT_NONE) + colorItems.getOrNull(selectedIndex)?.let { + setSelectedPosition(selectedIndex) + } ?: when (currentColor) { + context.getColor(R.color.theme_color_default) -> { + setSelectedPosition(defaultColorPosition) + } + else -> mSelectedPosition = SELECT_NONE + } } private fun showColorPicker(v: View) { @@ -97,13 +142,13 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { .setDialogTitle(R.string.mt_color_picker_title) .setColor(customColor) .create() - .setColorPickerDialogListener { _: Int, color: Int -> - val customColor = color or -0x1000000 - Pref.putInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, customColor) + .setColorPickerDialogListener { dialogId: Int, color: Int -> + val c = color or -0x1000000 + Pref.putInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, c) setSelectedPosition(customColorPosition) mOnItemClickListener?.onItemClick(v, customColorPosition) } - .show((context as ColorSelectBaseActivity).supportFragmentManager, "ColorPickerTag") + .show((context as FragmentActivity).supportFragmentManager, "ColorPickerTagForColorSelect") } fun setOnItemClickListener(onItemClickListener: ColorSelectBaseActivity.OnItemClickListener?) { @@ -117,7 +162,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val colorItem = ColorSelectBaseActivity.colorItems[position] + val colorItem = colorItems[position] val (colorRes, nameRes) = colorItem val color = when (position) { customColorPosition -> customColor @@ -131,7 +176,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { } } - override fun getItemCount() = ColorSelectBaseActivity.colorItems.size + override fun getItemCount() = colorItems.size } @@ -150,7 +195,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView { if (checked) { colorView.setImageResource(R.drawable.mt_ic_check_white_36dp) val selectedThemeColorRes = selectedThemeColor?.colorPrimary?.let { - if (ColorUtils.isLuminanceLight(it)) R.color.day else R.color.night + if (ViewUtils.isLuminanceLight(it)) R.color.day else R.color.night } ?: R.color.night_day colorView.imageTintList = ColorStateList.valueOf(context.getColor(selectedThemeColorRes)) } else { diff --git a/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerViewLegacy.kt b/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerViewLegacy.kt deleted file mode 100644 index a3562b19..00000000 --- a/app/src/main/java/org/autojs/autojs/theme/app/ColorSettingRecyclerViewLegacy.kt +++ /dev/null @@ -1,174 +0,0 @@ -package org.autojs.autojs.theme.app - -import android.annotation.SuppressLint -import android.content.Context -import android.content.res.ColorStateList -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.annotation.ColorInt -import androidx.fragment.app.FragmentActivity -import androidx.recyclerview.widget.DividerItemDecoration -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import androidx.recyclerview.widget.ThemeColorRecyclerView -import com.jaredrummler.android.colorpicker.ColorPickerDialog -import com.jaredrummler.android.colorpicker.ColorPickerDialogListener -import org.autojs.autojs.core.pref.Pref -import org.autojs.autojs.theme.ThemeColor -import org.autojs.autojs.theme.ThemeColorHelper -import org.autojs.autojs.theme.app.ColorSelectBaseActivity.Companion.customColorPosition -import org.autojs.autojs.util.ColorUtils -import org.autojs.autojs6.R - -class ColorSettingRecyclerViewLegacy : ThemeColorRecyclerView { - - constructor(context: Context) : super(context) - - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) - - constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) - - private var mOnItemClickListener: ColorSelectBaseActivity.OnItemClickListener? = null - - private var mSelectedPosition = ColorSelectBaseActivity.SELECT_NONE - - val selectedThemeColor: ThemeColor? - get() = when { - mSelectedPosition < 0 -> null - mSelectedPosition == customColorPosition -> customColor - else -> context.getColor(ColorSelectBaseActivity.colorItems[mSelectedPosition].first) - }?.let { ThemeColor(it) } - - private val customColor: Int - get() = Pref.getInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800)) - - private val mActualOnItemClickListener = OnClickListener { v -> - getChildViewHolder(v)?.let { holder -> - when (val pos = holder.bindingAdapterPosition) { - customColorPosition -> showColorPicker(v) - else -> { - setSelectedPosition(pos) - mOnItemClickListener?.onItemClick(v, pos) - } - } - } - } - - init { - adapter = Adapter() - layoutManager = LinearLayoutManager(context) - addItemDecoration(DividerItemDecoration(context, VERTICAL)) - } - - @SuppressLint("NotifyDataSetChanged") - fun setSelectedPosition(currentPosition: Int) { - if (mSelectedPosition != ColorSelectBaseActivity.SELECT_NONE) { - adapter!!.notifyItemChanged(mSelectedPosition) - mSelectedPosition = currentPosition - adapter!!.notifyItemChanged(currentPosition) - } else { - mSelectedPosition = currentPosition - adapter!!.notifyDataSetChanged() - } - Pref.putInt(ColorSelectBaseActivity.KEY_SELECTED_COLOR_INDEX, mSelectedPosition) - } - - fun setSelectedColor(colorPrimary: Int) { - for ((i, colorItem) in ColorSelectBaseActivity.colorItems.withIndex()) { - val color = when (i) { - customColorPosition -> customColor - else -> context.getColor(colorItem.first) - } - if (color == colorPrimary) { - setSelectedPosition(i) - return - } - } - mSelectedPosition = ColorSelectBaseActivity.SELECT_NONE - } - - private fun showColorPicker(v: View) { - ColorPickerDialog.newBuilder() - .setAllowCustom(true) - .setAllowPresets(false) - .setDialogType(ColorPickerDialog.TYPE_CUSTOM) - .setShowAlphaSlider(false) - .setDialogTitle(R.string.mt_color_picker_title) - .setColor(customColor) - .create() - .apply { - setColorPickerDialogListener(object : ColorPickerDialogListener { - override fun onColorSelected(dialogId: Int, @ColorInt color: Int) { - val c = color or -0x1000000 - Pref.putInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, c) - setSelectedPosition(customColorPosition) - mOnItemClickListener?.onItemClick(v, customColorPosition) - } - - override fun onDialogDismissed(dialogId: Int) {} - }) - } - .show((context as FragmentActivity).supportFragmentManager, "Tag") - } - - fun setOnItemClickListener(onItemClickListener: ColorSelectBaseActivity.OnItemClickListener?) { - mOnItemClickListener = onItemClickListener - } - - private inner class Adapter : RecyclerView.Adapter() { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return ViewHolder(LayoutInflater.from(context).inflate(R.layout.mt_color_setting_recycler_view_item, parent, false)) - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val colorItem = ColorSelectBaseActivity.colorItems[position] - val (colorRes, nameRes) = colorItem - val color = when (position) { - customColorPosition -> customColor - else -> context.getColor(colorRes) - } - holder.apply { - setColor(color) - nameView.text = context.getString(nameRes) - nameView.setTextColor(context.getColor(R.color.color_selector_item_text)) - setChecked(mSelectedPosition == position) - } - } - - override fun getItemCount() = ColorSelectBaseActivity.colorItems.size - - } - - private inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - - var colorView: ImageView - var nameView: TextView - - init { - itemView.setOnClickListener(mActualOnItemClickListener) - colorView = itemView.findViewById(R.id.color) - nameView = itemView.findViewById(R.id.name) - } - - fun setChecked(checked: Boolean) { - if (checked) { - colorView.setImageResource(R.drawable.mt_ic_check_white_36dp) - val selectedThemeColorRes = selectedThemeColor?.colorPrimary?.let { - if (ColorUtils.isLuminanceLight(it)) R.color.day else R.color.night - } ?: R.color.night_day - colorView.imageTintList = ColorStateList.valueOf(context.getColor(selectedThemeColorRes)) - } else { - colorView.setImageDrawable(null) - } - } - - fun setColor(c: Int) = ThemeColorHelper.setBackgroundColor(colorView, c) - - } - -} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorFloatingActionButton.java b/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorFloatingActionButton.java index c76f4a97..c5d76646 100644 --- a/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorFloatingActionButton.java +++ b/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorFloatingActionButton.java @@ -3,13 +3,12 @@ package org.autojs.autojs.theme.widget; import android.content.Context; import android.content.res.ColorStateList; import android.util.AttributeSet; - import com.google.android.material.floatingactionbutton.FloatingActionButton; - import org.autojs.autojs.theme.ThemeColor; import org.autojs.autojs.theme.ThemeColorManager; import org.autojs.autojs.theme.ThemeColorMutable; import org.autojs.autojs.util.ColorUtils; +import org.autojs.autojs.util.ViewUtils; import org.autojs.autojs6.R; /** @@ -41,7 +40,7 @@ public class ThemeColorFloatingActionButton extends FloatingActionButton impleme int colorAccent = color.colorAccent; int colorForContrast = ColorUtils.adjustColorForContrast(getContext().getColor(R.color.window_background), colorAccent, 1.15); setBackgroundTintList(ColorStateList.valueOf(colorForContrast)); - var tintColorRes = ColorUtils.isLuminanceLight(colorForContrast) + var tintColorRes = ViewUtils.isLuminanceLight(colorForContrast) ? R.color.fab_tint_dark : R.color.fab_tint_light; var tintColor = getResources().getColor(tintColorRes, null); diff --git a/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorToolbar.kt b/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorToolbar.kt index f3eae77d..c5a49e13 100644 --- a/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorToolbar.kt +++ b/app/src/main/java/org/autojs/autojs/theme/widget/ThemeColorToolbar.kt @@ -5,9 +5,8 @@ import android.util.AttributeSet import androidx.appcompat.widget.Toolbar import org.autojs.autojs.theme.ThemeColor import org.autojs.autojs.theme.ThemeColorManager.add -import org.autojs.autojs.theme.ThemeColorManager.getDayOrNightColorByLuminance -import org.autojs.autojs.theme.ThemeColorManager.isThemeColorLuminanceLight import org.autojs.autojs.theme.ThemeColorMutable +import org.autojs.autojs.util.ViewUtils import org.autojs.autojs.util.ViewUtils.applyColorFilterWith import org.autojs.autojs.util.ViewUtils.onceGlobalLayout import org.autojs.autojs6.R @@ -36,21 +35,22 @@ open class ThemeColorToolbar : Toolbar, ThemeColorMutable { setTitleTextAppearance(context, R.style.TextAppearanceMainTitle) } - override fun setThemeColor(color: ThemeColor) { - onceGlobalLayout { applyThemeColor(color) } + override fun setThemeColor(themeColor: ThemeColor) { + onceGlobalLayout { applyThemeColor(themeColor) } } - private fun applyThemeColor(color: ThemeColor) { - val aimColor = getDayOrNightColorByLuminance(context) + private fun applyThemeColor(themeColor: ThemeColor) { + val currentThemeColor = themeColor.colorPrimary + val tintColor = ViewUtils.getDayOrNightColorByLuminance(context, currentThemeColor) - setBackgroundColor(color.colorPrimary) - setTitleTextColor(aimColor) - setSubtitleTextColor(aimColor) + setBackgroundColor(currentThemeColor) + setTitleTextColor(tintColor) + setSubtitleTextColor(tintColor) - navigationIcon?.let { navigationIcon = it.applyColorFilterWith(aimColor) } - collapseIcon?.let { collapseIcon = it.applyColorFilterWith(aimColor) } - overflowIcon?.let { overflowIcon = it.applyColorFilterWith(aimColor) } + navigationIcon?.let { navigationIcon = it.applyColorFilterWith(tintColor) } + collapseIcon?.let { collapseIcon = it.applyColorFilterWith(tintColor) } + overflowIcon?.let { overflowIcon = it.applyColorFilterWith(tintColor) } - popupTheme = if (isThemeColorLuminanceLight()) R.style.PopupMenuThemeLight else R.style.PopupMenuThemeDark + popupTheme = if (ViewUtils.isLuminanceLight(currentThemeColor)) R.style.PopupMenuThemeLight else R.style.PopupMenuThemeDark } } diff --git a/app/src/main/java/org/autojs/autojs/ui/BaseActivity.kt b/app/src/main/java/org/autojs/autojs/ui/BaseActivity.kt index 35a186ac..cfa0faf7 100644 --- a/app/src/main/java/org/autojs/autojs/ui/BaseActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/BaseActivity.kt @@ -17,7 +17,6 @@ import org.autojs.autojs.theme.ThemeChangeNotifier import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.util.LocaleUtils import org.autojs.autojs.util.ViewUtils -import org.autojs.autojs6.BuildConfig import org.autojs.autojs6.R /** @@ -48,6 +47,10 @@ abstract class BaseActivity : AppCompatActivity() { ThemeChangeNotifier.themeChanged.observe(this) { initThemeColors() + if (handleStatusBarThemeColorAutomatically) { + ThemeColorManager.setStatusBarBackgroundColor(this) + setUpStatusBarAppearanceLightByThemeColor() + } } // @Dubious by SuperMonster003 on Oct 28, 2024. @@ -71,7 +74,7 @@ abstract class BaseActivity : AppCompatActivity() { override fun onStart() { super.onStart() initThemeColors() - if (handleStatusBarThemeColorAutomatically && !BuildConfig.isInrt) { + if (handleStatusBarThemeColorAutomatically) { ThemeColorManager.addActivityStatusBar(this) setUpStatusBarAppearanceLightByThemeColor() } @@ -95,7 +98,7 @@ abstract class BaseActivity : AppCompatActivity() { } protected fun setUpStatusBarAppearanceLightByThemeColor() { - ViewUtils.setStatusBarAppearanceLight(this, ThemeColorManager.isThemeColorLuminanceDark()) + ViewUtils.setStatusBarAppearanceLight(this, ThemeColorManager.isLuminanceDark()) } } \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt index aa994b97..04481835 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.kt @@ -5,9 +5,6 @@ import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.content.res.ColorStateList -import android.graphics.PorterDuff -import android.graphics.PorterDuffColorFilter import android.os.Bundle import android.os.Handler import android.os.Looper @@ -65,6 +62,9 @@ import org.autojs.autojs.ui.widget.SearchViewItem import org.autojs.autojs.util.StringUtils.key import org.autojs.autojs.util.UpdateUtils import org.autojs.autojs.util.ViewUtils +import org.autojs.autojs.util.ViewUtils.onceGlobalLayout +import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance +import org.autojs.autojs.util.ViewUtils.setNavigationIconColorByThemeColorLuminance import org.autojs.autojs.util.WorkingDirectoryUtils import org.autojs.autojs6.R import org.autojs.autojs6.databinding.ActivityMainBinding @@ -278,7 +278,8 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { } private fun setUpToolbarColors() { - ViewUtils.setToolbarMenuIconsColorByThemeColorLuminance(this, mToolbar) + mToolbar.setMenuIconsColorByThemeColorLuminance(this) + mToolbar.setNavigationIconColorByThemeColorLuminance(this) mSearchViewItem?.initThemeColors() } @@ -287,7 +288,7 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { val tabSelectedColor: Int val tabSelectedIndicatorColor: Int when { - ThemeColorManager.isThemeColorLuminanceLight() -> { + ThemeColorManager.isLuminanceLight() -> { tabNormalColor = getColor(R.color.tab_text_dark) tabSelectedColor = getColor(R.color.tab_selected_text_dark) tabSelectedIndicatorColor = getColor(R.color.tab_indicator_dark) @@ -399,11 +400,11 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { private fun setUpSearchMenuItem(searchMenuItem: MenuItem) { mSearchViewItem = object : SearchViewItem(this, searchMenuItem) { override fun onMenuItemActionExpand(item: MenuItem): Boolean { - setUpToolbarCollapseIconColor() if (isCurrentPageDocs) { mDocsSearchItemExpanded = true mLogMenuItem.setIcon(R.drawable.ic_ali_up) } + mToolbar.onceGlobalLayout { setUpToolbarColors() } return super.onMenuItemActionExpand(item) } @@ -431,18 +432,6 @@ class MainActivity : BaseActivity(), DelegateHost, HostActivity { } } - private fun setUpToolbarCollapseIconColor() { - val collapseIcon = mToolbar.collapseIcon - if (collapseIcon != null) { - val isThemeColorLuminanceLight = ThemeColorManager.isThemeColorLuminanceLight() - val fullColor = getColor(if (isThemeColorLuminanceLight) R.color.day_full else R.color.night_full) - collapseIcon.setTintList(ColorStateList.valueOf(fullColor)) - collapseIcon.setTint(fullColor) - collapseIcon.colorFilter = PorterDuffColorFilter(fullColor, PorterDuff.Mode.SRC_IN) - mToolbar.collapseIcon = collapseIcon - } - } - private fun submitForwardQuery() { val event = QueryEvent.FIND_FORWARD EventBus.getDefault().post(event) diff --git a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt index 8dde8bac..1fad5621 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt @@ -1,5 +1,6 @@ package org.autojs.autojs.ui.main.drawer +import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.os.Bundle @@ -29,6 +30,7 @@ import org.autojs.autojs.pluginclient.JsonSocketServer import org.autojs.autojs.service.AccessibilityService import org.autojs.autojs.service.ForegroundService import org.autojs.autojs.service.NotificationService +import org.autojs.autojs.theme.ThemeChangeNotifier import org.autojs.autojs.theme.app.ColorSelectBaseActivity import org.autojs.autojs.ui.floating.CircularMenu import org.autojs.autojs.ui.floating.FloatyWindowManger @@ -102,6 +104,12 @@ open class DrawerFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + @SuppressLint("NotifyDataSetChanged") + ThemeChangeNotifier.themeChanged.observe(this) { + mThemeColorItem.subtitle = ColorSelectBaseActivity.getCurrentColorSummary(mContext) + mDrawerMenu.adapter?.notifyDataSetChanged() + } + mContext = requireContext() mActivity = requireActivity() as MainActivity diff --git a/app/src/main/java/org/autojs/autojs/ui/main/scripts/BaseDisplayContentActivity.kt b/app/src/main/java/org/autojs/autojs/ui/main/scripts/BaseDisplayContentActivity.kt index ef658922..901ff581 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/scripts/BaseDisplayContentActivity.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/scripts/BaseDisplayContentActivity.kt @@ -24,7 +24,6 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import org.autojs.autojs.ui.BaseActivity -import org.autojs.autojs.util.ColorUtils import org.autojs.autojs.util.DisplayUtils import org.autojs.autojs.util.ViewUtils import org.autojs.autojs6.R @@ -41,7 +40,7 @@ abstract class BaseDisplayContentActivity : BaseActivity() { abstract var highlightGrammarName: String abstract var highlightThemeLanguage: String - open var themeColorDayNight = R.color.md_blue_grey_50 to R.color.md_blue_grey_900 + open var themeColorDayNight = R.color.md_blue_gray_50 to R.color.md_blue_gray_900 private lateinit var internalTextView: TextView private lateinit var internalFabView: FloatingActionButton @@ -145,14 +144,14 @@ abstract class BaseDisplayContentActivity : BaseActivity() { if (ViewUtils.isNightModeYes(this)) { internalFabView.backgroundTintList = ColorStateList.valueOf(themeColorNight) - internalFabView.imageTintList = ColorStateList.valueOf(if (ColorUtils.isLuminanceDark(themeColorNight)) getColor(R.color.night) else getColor(R.color.day)) + internalFabView.imageTintList = ColorStateList.valueOf(if (ViewUtils.isLuminanceDark(themeColorNight)) getColor(R.color.night) else getColor(R.color.day)) ViewUtils.setStatusBarBackgroundColor(this, themeColorNight) - ViewUtils.setStatusBarAppearanceLight(this, ColorUtils.isLuminanceDark(themeColorNight)) + ViewUtils.setStatusBarAppearanceLight(this, ViewUtils.isLuminanceDark(themeColorNight)) } else { internalFabView.backgroundTintList = ColorStateList.valueOf(themeColorDay) - internalFabView.imageTintList = ColorStateList.valueOf(if (ColorUtils.isLuminanceDark(themeColorDay)) getColor(R.color.night) else getColor(R.color.day)) + internalFabView.imageTintList = ColorStateList.valueOf(if (ViewUtils.isLuminanceDark(themeColorDay)) getColor(R.color.night) else getColor(R.color.day)) ViewUtils.setStatusBarBackgroundColor(this, themeColorDay) - ViewUtils.setStatusBarAppearanceLight(this, ColorUtils.isLuminanceDark(themeColorDay)) + ViewUtils.setStatusBarAppearanceLight(this, ViewUtils.isLuminanceDark(themeColorDay)) } } diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/FirstCharView.kt b/app/src/main/java/org/autojs/autojs/ui/widget/FirstCharView.kt index d55daa28..096cfae4 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/FirstCharView.kt +++ b/app/src/main/java/org/autojs/autojs/ui/widget/FirstCharView.kt @@ -11,7 +11,6 @@ import androidx.annotation.ColorInt import androidx.annotation.ColorRes import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.theme.ThemeColorManagerCompat -import org.autojs.autojs.util.ColorUtils import org.autojs.autojs.util.FileUtils import org.autojs.autojs6.R import kotlin.math.roundToInt diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/SearchViewItem.java b/app/src/main/java/org/autojs/autojs/ui/widget/SearchViewItem.java index bc48d307..eaf4d56f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/SearchViewItem.java +++ b/app/src/main/java/org/autojs/autojs/ui/widget/SearchViewItem.java @@ -43,7 +43,7 @@ public class SearchViewItem implements MenuItemCompat.OnActionExpandListener, Se } public void initThemeColors() { - boolean isThemeColorLuminanceLight = ThemeColorManager.isThemeColorLuminanceLight(); + boolean isThemeColorLuminanceLight = ThemeColorManager.isLuminanceLight(); int fullColor = mActivity.getColor(isThemeColorLuminanceLight ? R.color.day_full : R.color.night_full); int hintColor = mActivity.getColor(isThemeColorLuminanceLight ? R.color.day : R.color.night); diff --git a/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.kt b/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.kt index b14b08a1..311cca88 100644 --- a/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.kt +++ b/app/src/main/java/org/autojs/autojs/ui/widget/ToolbarMenuItem.kt @@ -30,13 +30,13 @@ class ToolbarMenuItem : LinearLayout { } private val colorEnabled: Int - get() = when (ThemeColorManager.isThemeColorLuminanceLight()) { + get() = when (ThemeColorManager.isLuminanceLight()) { true -> ContextCompat.getColor(context, R.color.toolbar_menu_item_enabled_dark) else -> ContextCompat.getColor(context, R.color.toolbar_menu_item_enabled_light) } private val colorDisabled: Int - get() = when (ThemeColorManager.isThemeColorLuminanceLight()) { + get() = when (ThemeColorManager.isLuminanceLight()) { true -> ContextCompat.getColor(context, R.color.toolbar_menu_item_disabled_dark) else -> ContextCompat.getColor(context, R.color.toolbar_menu_item_disabled_light) } diff --git a/app/src/main/java/org/autojs/autojs/util/ColorUtils.kt b/app/src/main/java/org/autojs/autojs/util/ColorUtils.kt index 86f9b844..adc61c80 100644 --- a/app/src/main/java/org/autojs/autojs/util/ColorUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/ColorUtils.kt @@ -14,7 +14,6 @@ import androidx.core.graphics.ColorUtils import org.autojs.autojs.app.GlobalAppContext import org.autojs.autojs.core.image.ColorTable import org.autojs.autojs.theme.ThemeColor -import org.autojs.autojs6.R import kotlin.math.pow import kotlin.math.roundToInt import kotlin.text.RegexOption.IGNORE_CASE @@ -281,7 +280,7 @@ object ColorUtils { * */ @JvmStatic - fun isLuminanceLight(@ColorInt color: Int) = luminance(color) > 0.179 + fun isLuminanceLight(@ColorInt color: Int) = luminance(color) >= 0.179 @JvmStatic fun isLuminanceDark(@ColorInt color: Int) = !isLuminanceLight(color) diff --git a/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt b/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt index c1a167db..6a64905a 100644 --- a/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/ViewUtils.kt @@ -44,6 +44,8 @@ import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.util.StringUtils.key import org.autojs.autojs6.R +import org.autojs.autojs6.R.color.day +import org.autojs.autojs6.R.color.night import kotlin.math.roundToInt /** @@ -170,6 +172,28 @@ object ViewUtils { activity.window.addFlags(flags) } + @JvmStatic + @JvmOverloads + fun isLuminanceLight(color: Int, backgroundColorMatters: Boolean = true) = when { + !backgroundColorMatters -> ColorUtils.isLuminanceLight(color) + !isNightModeEnabled -> ColorUtils.luminance(color) >= 0.224 + else -> ColorUtils.luminance(color) >= 0.141 + } + + @JvmStatic + @JvmOverloads + fun isLuminanceDark(color: Int, backgroundColorMatters: Boolean = true) = !isLuminanceLight(color, backgroundColorMatters) + + @JvmStatic + fun getDayOrNightColorByLuminance(context: Context, color: Int): Int { + return context.getColor(if (isLuminanceLight(color)) day else night) + } + + @JvmStatic + fun getDayOrNightColorResByLuminance(color: Int): Int { + return if (isLuminanceLight(color)) day else night + } + @JvmStatic fun isStatusBarAppearanceLight(activity: Activity): Boolean { return !isStatusBarAppearanceDark(activity) @@ -191,7 +215,7 @@ object ViewUtils { } fun setStatusBarAppearanceLightByColorLuminance(activity: Activity, aimColor: Int) { - val shouldBeLight = ColorUtils.isLuminanceDark(aimColor) + val shouldBeLight = isLuminanceDark(aimColor) setStatusBarAppearanceLight(activity, shouldBeLight) } @@ -472,14 +496,6 @@ object ViewUtils { toolbar.setTitlesTextColorByColorLuminance(context, aimColor) } - @JvmStatic - fun getDayOrNightColorByLuminance(context: Context, aimColor: Int): Int = context.getColor(getDayOrNightColorResByLuminance(aimColor)) - - @JvmStatic - fun getDayOrNightColorResByLuminance(aimColor: Int): Int { - return if (ColorUtils.isLuminanceLight(aimColor)) R.color.day else R.color.night - } - @JvmStatic fun showToast(context: Context, stringRes: Int) = showToast(context, stringRes, false) diff --git a/app/src/main/res/drawable/ic_color_library_custom.png b/app/src/main/res/drawable/ic_color_library_custom.png new file mode 100644 index 00000000..0103cd56 Binary files /dev/null and b/app/src/main/res/drawable/ic_color_library_custom.png differ diff --git a/app/src/main/res/drawable/ic_color_library_default.png b/app/src/main/res/drawable/ic_color_library_default.png new file mode 100644 index 00000000..57cca66b Binary files /dev/null and b/app/src/main/res/drawable/ic_color_library_default.png differ diff --git a/app/src/main/res/drawable/ic_color_library_preset.png b/app/src/main/res/drawable/ic_color_library_preset.png new file mode 100644 index 00000000..220decda Binary files /dev/null and b/app/src/main/res/drawable/ic_color_library_preset.png differ diff --git a/app/src/main/res/layout/activity_main_inrt.xml b/app/src/main/res/layout/activity_main_inrt.xml index 8cd85a50..be2d1fcb 100644 --- a/app/src/main/res/layout/activity_main_inrt.xml +++ b/app/src/main/res/layout/activity_main_inrt.xml @@ -36,12 +36,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:excludeFromNavigationBar="true" - app:color_verbose="#DFC0C0C0" - app:color_debug="#CC000000" - app:color_info="#FF43A047" - app:color_warn="#FF1976D2" - app:color_error="#FFC62828" - app:color_assert="#FFE254FF" /> + app:color_verbose="#BDBDBD" + app:color_debug="#111214" + app:color_info="#43A047" + app:color_warn="#1976D2" + app:color_error="#C62828" + app:color_assert="#E254FF" /> diff --git a/app/src/main/res/layout/activity_settings_inrt.xml b/app/src/main/res/layout/activity_settings_inrt.xml index 396d7ecc..076d5a7d 100644 --- a/app/src/main/res/layout/activity_settings_inrt.xml +++ b/app/src/main/res/layout/activity_settings_inrt.xml @@ -20,7 +20,7 @@ app:titleTextColor="@color/day_full" app:subtitleTextColor="@color/day_full" android:theme="@style/ToolBarStyleInrt" - android:background="@color/md_blue_grey_50" + android:background="@color/md_blue_gray_50" app:contentInsetStartWithNavigation="0dp" app:contentInsetEndWithActions="2dp" app:titleTextAppearance="@style/TextAppearanceEditorTitle" diff --git a/app/src/main/res/layout/mt_activity_color_select_legacy.xml b/app/src/main/res/layout/mt_activity_color_libraries.xml similarity index 88% rename from app/src/main/res/layout/mt_activity_color_select_legacy.xml rename to app/src/main/res/layout/mt_activity_color_libraries.xml index d50ec451..5ea09791 100644 --- a/app/src/main/res/layout/mt_activity_color_select_legacy.xml +++ b/app/src/main/res/layout/mt_activity_color_libraries.xml @@ -32,10 +32,10 @@ - + android:layout_height="match_parent" + android:scrollbars="vertical" /> \ No newline at end of file diff --git a/app/src/main/res/layout/mt_activity_color_library.xml b/app/src/main/res/layout/mt_activity_color_library.xml new file mode 100644 index 00000000..ebb0b08d --- /dev/null +++ b/app/src/main/res/layout/mt_activity_color_library.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/mt_color_libraries_recycler_view_item.xml b/app/src/main/res/layout/mt_color_libraries_recycler_view_item.xml new file mode 100644 index 00000000..221321d3 --- /dev/null +++ b/app/src/main/res/layout/mt_color_libraries_recycler_view_item.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/mt_color_library_recycler_view_item.xml b/app/src/main/res/layout/mt_color_library_recycler_view_item.xml new file mode 100644 index 00000000..9784fbe7 --- /dev/null +++ b/app/src/main/res/layout/mt_color_library_recycler_view_item.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/preference_custom.xml b/app/src/main/res/layout/preference_custom.xml index db2002fd..8a3cc73b 100644 --- a/app/src/main/res/layout/preference_custom.xml +++ b/app/src/main/res/layout/preference_custom.xml @@ -3,9 +3,9 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:minHeight="52dp" android:baselineAligned="false" android:gravity="center_vertical" - android:minHeight="52dp" android:orientation="horizontal" android:paddingEnd="?android:attr/scrollbarSize"> @@ -21,10 +21,9 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="start|center_vertical" - android:layout_marginBottom="12dp" - android:layout_marginEnd="6dp" + android:layout_marginVertical="12dp" android:layout_marginStart="16dp" - android:layout_marginTop="12dp" + android:layout_marginEnd="6dp" android:layout_weight="1" android:orientation="vertical"> @@ -36,7 +35,7 @@ android:fadingEdge="horizontal" android:fontFamily="sans-serif" android:maxLines="1" - android:textColor="?android:textColorPrimary" + android:textColor="@color/day_night_full" android:textSize="15sp" tools:text="@string/text_sample_string" /> @@ -47,7 +46,7 @@ android:layout_marginTop="2dp" android:fontFamily="sans-serif" android:maxLines="4" - android:textColor="?android:textColorSecondary" + android:textColor="@color/day_night_alpha_60" android:textSize="12sp" tools:text="@string/text_sample_string" /> diff --git a/app/src/main/res/menu/menu_color_libraries.xml b/app/src/main/res/menu/menu_color_libraries.xml new file mode 100644 index 00000000..48c5b304 --- /dev/null +++ b/app/src/main/res/menu/menu_color_libraries.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_color_library.xml b/app/src/main/res/menu/menu_color_library.xml new file mode 100644 index 00000000..845f9504 --- /dev/null +++ b/app/src/main/res/menu/menu_color_library.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_color_select.xml b/app/src/main/res/menu/menu_color_select.xml index a57de813..ed8ba2ef 100644 --- a/app/src/main/res/menu/menu_color_select.xml +++ b/app/src/main/res/menu/menu_color_select.xml @@ -3,33 +3,9 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - - - - - - - - diff --git a/app/src/main/res/menu/menu_color_select_legacy.xml b/app/src/main/res/menu/menu_color_select_legacy.xml deleted file mode 100644 index ed8ba2ef..00000000 --- a/app/src/main/res/menu/menu_color_select_legacy.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 373384ff..4dda7554 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -1,20 +1,21 @@ - + + android:id="@+id/action_log" + android:icon="@drawable/ic_ali_log" + android:title="@string/text_log" + app:showAsAction="ifRoom" /> + android:id="@+id/action_search" + android:icon="@drawable/ic_search_black_48dp" + android:title="@string/text_search" + android:imeOptions="actionSearch" + android:inputType="text" + app:actionViewClass="androidx.appcompat.widget.SearchView" + app:showAsAction="ifRoom|collapseActionView" /> \ No newline at end of file diff --git a/app/src/main/res/values-ar/material_design_colors_string.xml b/app/src/main/res/values-ar/material_design_colors_string.xml index 1ac0da45..8549a88c 100644 --- a/app/src/main/res/values-ar/material_design_colors_string.xml +++ b/app/src/main/res/values-ar/material_design_colors_string.xml @@ -272,30 +272,30 @@ براون (800) براون (900) - - غراي (50) - غراي (100) - غراي (200) - غراي (300) - غراي (400) - غراي (500) - غراي (600) - غراي (700) - غراي (800) - غراي (900) + + غراي (50) + غراي (100) + غراي (200) + غراي (300) + غراي (400) + غراي (500) + غراي (600) + غراي (700) + غراي (800) + غراي (900) أسود (1000) وايت (1000) - - ازرق رمادي (50) - ازرق رمادي (100) - ازرق رمادي (200) - ازرق رمادي (300) - ازرق رمادي (400) - ازرق رمادي (500) - ازرق رمادي (600) - ازرق رمادي (700) - ازرق رمادي (800) - ازرق رمادي (900) + + ازرق رمادي (50) + ازرق رمادي (100) + ازرق رمادي (200) + ازرق رمادي (300) + ازرق رمادي (400) + ازرق رمادي (500) + ازرق رمادي (600) + ازرق رمادي (700) + ازرق رمادي (800) + ازرق رمادي (900) \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index e3bbf72d..7b974cf0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -903,8 +903,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-en/android_colors_string.xml b/app/src/main/res/values-en/android_colors_string.xml index eab1f650..a13fca7e 100644 --- a/app/src/main/res/values-en/android_colors_string.xml +++ b/app/src/main/res/values-en/android_colors_string.xml @@ -3,18 +3,12 @@ Black Blue - Cyan - Aqua + Cyan / Aqua Dark gray - Dark grey Gray - Grey - Green - Lime + Green / Lime Light gray - Light grey - Magenta - Fuchsia + Magenta / Fuchsia Maroon Navy Olive diff --git a/app/src/main/res/values-en/css_colors_string.xml b/app/src/main/res/values-en/css_colors_string.xml index 3a5ad1c4..fe8141d1 100644 --- a/app/src/main/res/values-en/css_colors_string.xml +++ b/app/src/main/res/values-en/css_colors_string.xml @@ -20,13 +20,11 @@ Cornflower blue Corn silk Crimson - Cyan - Aqua + Cyan / Aqua Dark blue Dark cyan Dark goldenrod Dark gray - Dark grey Dark green Dark khaki Dark magenta @@ -38,13 +36,11 @@ Dark sea green Dark slate blue Dark slate gray - Dark slate grey Dark turquoise Dark violet Deep pink Deep sky blue Dim gray - Dim grey Dodger blue Fire brick Floral white @@ -54,7 +50,6 @@ Gold Goldenrod Gray - Grey Green Green yellow Honeydew @@ -72,21 +67,18 @@ Light cyan Light goldenrod yellow Light gray - Light grey Light green Light pink Light salmon Light sea green Light sky blue Light slate gray - Light slate grey Light steel blue Light yellow Lime Lime green Linen - Magenta - Fuchsia + Magenta / Fuchsia Maroon Medium aquamarine Medium blue @@ -134,7 +126,6 @@ Sky blue Slate blue Slate gray - Slate grey Snow Spring green Steel blue diff --git a/app/src/main/res/values-en/material_design_colors_string.xml b/app/src/main/res/values-en/material_design_colors_string.xml index 81f21f5d..45ed32df 100644 --- a/app/src/main/res/values-en/material_design_colors_string.xml +++ b/app/src/main/res/values-en/material_design_colors_string.xml @@ -272,30 +272,30 @@ Brown (800) Brown (900) - - Grey (50) - Grey (100) - Grey (200) - Grey (300) - Grey (400) - Grey (500) - Grey (600) - Grey (700) - Grey (800) - Grey (900) + + Gray (50) + Gray (100) + Gray (200) + Gray (300) + Gray (400) + Gray (500) + Gray (600) + Gray (700) + Gray (800) + Gray (900) Black (1000) White (1000) - - Blue grey (50) - Blue grey (100) - Blue grey (200) - Blue grey (300) - Blue grey (400) - Blue grey (500) - Blue grey (600) - Blue grey (700) - Blue grey (800) - Blue grey (900) + + Blue gray (50) + Blue gray (100) + Blue gray (200) + Blue gray (300) + Blue gray (400) + Blue gray (500) + Blue gray (600) + Blue gray (700) + Blue gray (800) + Blue gray (900) \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 22cd61cf..4a72a5e9 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -899,8 +899,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-en/web_colors_string.xml b/app/src/main/res/values-en/web_colors_string.xml index bf0689ad..183cada3 100644 --- a/app/src/main/res/values-en/web_colors_string.xml +++ b/app/src/main/res/values-en/web_colors_string.xml @@ -85,7 +85,7 @@ Fuchsia Gainsboro Ghost white - Golden + Golden / Gold Goldenrod Grass green Gray @@ -107,7 +107,7 @@ Khaki Lapis lazuli Lavender - Lavender blue + Lavender blue / Periwinkle Lavender blush Lavender magenta Lavender mist @@ -129,7 +129,7 @@ Light violet Light yellow Lilac - Lime + Lime / Light lime Lime green Linen Magenta @@ -162,7 +162,7 @@ Moss green Mustard Navajo white - Navy + Navy / Navy blue Ocher Old lace Old rose diff --git a/app/src/main/res/values-es/material_design_colors_string.xml b/app/src/main/res/values-es/material_design_colors_string.xml index 85544d86..696fcdfb 100644 --- a/app/src/main/res/values-es/material_design_colors_string.xml +++ b/app/src/main/res/values-es/material_design_colors_string.xml @@ -272,30 +272,30 @@ Marrón (800) Marrón (900) - - Gris (50) - Gris (100) - Gris (200) - Gris (300) - Gris (400) - Grises (500) - Grises (600) - Grises (700) - Gris (800) - Gris (900) + + Gris (50) + Gris (100) + Gris (200) + Gris (300) + Gris (400) + Grises (500) + Grises (600) + Grises (700) + Gris (800) + Gris (900) Negro (1000) Blanco (1000) - - Gris azulado (50) - Gris azulado (100) - Gris azulado (200) - Gris azulado (300) - Gris azulado (400) - Gris azulado (500) - Gris azulado (600) - Gris azulado (700) - Gris azulado (800) - Gris azulado (900) + + Gris azulado (50) + Gris azulado (100) + Gris azulado (200) + Gris azulado (300) + Gris azulado (400) + Gris azulado (500) + Gris azulado (600) + Gris azulado (700) + Gris azulado (800) + Gris azulado (900) \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0c2055d5..84ee50e6 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -902,8 +902,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-fr/material_design_colors_string.xml b/app/src/main/res/values-fr/material_design_colors_string.xml index 103056b8..0077f221 100644 --- a/app/src/main/res/values-fr/material_design_colors_string.xml +++ b/app/src/main/res/values-fr/material_design_colors_string.xml @@ -273,29 +273,29 @@ Brun (900) - Gris (50) - Gris (100) - Gris (200) - Gris (300) - Gris (400) - Gris (500) - Gris (600) - Gris (700) - Gris (800) - Gris (900) + Gris (50) + Gris (100) + Gris (200) + Gris (300) + Gris (400) + Gris (500) + Gris (600) + Gris (700) + Gris (800) + Gris (900) Noir (1000) Blanc (1000) - Gris bleu (50) - Gris bleu (100) - Gris bleu (200) - Gris bleu (300) - Gris bleu (400) - Gris bleu (500) - Gris bleu (600) - Gris bleu (700) - Gris bleu (800) - Gris bleu (900) + Gris bleu (50) + Gris bleu (100) + Gris bleu (200) + Gris bleu (300) + Gris bleu (400) + Gris bleu (500) + Gris bleu (600) + Gris bleu (700) + Gris bleu (800) + Gris bleu (900) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 10da6968..78d8d1f2 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -902,8 +902,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-ja/material_design_colors_string.xml b/app/src/main/res/values-ja/material_design_colors_string.xml index cd90cc37..8fdb41c7 100644 --- a/app/src/main/res/values-ja/material_design_colors_string.xml +++ b/app/src/main/res/values-ja/material_design_colors_string.xml @@ -272,30 +272,30 @@ ブラウン (800) ブラウン (900) - - グレー (50) - グレー (100) - グレー (200) - グレー (300) - グレー (400) - グレー (500) - グレー (600) - グレー (700) - グレー (800) - グレー (900) + + グレー (50) + グレー (100) + グレー (200) + グレー (300) + グレー (400) + グレー (500) + グレー (600) + グレー (700) + グレー (800) + グレー (900) ブラック (1000) ホワイト (1000) - - ブルーグレー (50) - ブルーグレー (100) - ブルーグレー (200) - ブルーグレー (300) - ブルーグレー (400) - ブルーグレー (500) - ブルーグレー (600) - ブルーグレー (700) - ブルーグレー (800) - ブルーグレー (900) + + ブルーグレー (50) + ブルーグレー (100) + ブルーグレー (200) + ブルーグレー (300) + ブルーグレー (400) + ブルーグレー (500) + ブルーグレー (600) + ブルーグレー (700) + ブルーグレー (800) + ブルーグレー (900) \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e25fd111..113b92f2 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -902,8 +902,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-ko/material_design_colors_string.xml b/app/src/main/res/values-ko/material_design_colors_string.xml index 1ab74a81..e2be0afe 100644 --- a/app/src/main/res/values-ko/material_design_colors_string.xml +++ b/app/src/main/res/values-ko/material_design_colors_string.xml @@ -272,30 +272,30 @@ 브라운 (800) 브라운 (900) - - 회색 (50) - 회색 (100) - 회색 (200) - 회색 (300) - 회색 (400) - 회색 (500) - 회색 (600) - 회색 (700) - 회색 (800) - 회색 (900) + + 회색 (50) + 회색 (100) + 회색 (200) + 회색 (300) + 회색 (400) + 회색 (500) + 회색 (600) + 회색 (700) + 회색 (800) + 회색 (900) 블랙 (1000) 흰색 (1000) - - 블루 그레이 (50) - 블루 그레이 (100) - 블루 그레이 (200) - 블루 그레이 (300) - 블루 그레이 (400) - 블루 그레이 (500) - 블루 그레이 (600) - 블루 그레이 (700) - 블루 그레이 (800) - 블루 그레이 (900) + + 블루 그레이 (50) + 블루 그레이 (100) + 블루 그레이 (200) + 블루 그레이 (300) + 블루 그레이 (400) + 블루 그레이 (500) + 블루 그레이 (600) + 블루 그레이 (700) + 블루 그레이 (800) + 블루 그레이 (900) \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 412c5e9d..330c23f4 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -903,8 +903,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 41362d46..56bbc775 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -4,11 +4,12 @@ @color/dusk @color/dusk_full #B3BFBFBF + #9ABFBFBF #4DBFBFBF #33BFBFBF @color/dawn @color/dawn_full - @color/day_full + @color/md_gray_900 #3B3B3B @color/day_night @color/day_night_full @@ -26,7 +27,7 @@ #C7A4FF #0DA798 #BCAAA4 - #616161 + @color/md_gray_700 #009624 @color/dialog_button_finish #4FC3F7 @@ -68,6 +69,7 @@ #BF546E7A #DEFEFEFE + @color/md_gray_600 #CC424347 @color/window_background @color/window_background diff --git a/app/src/main/res/values-ru/material_design_colors_string.xml b/app/src/main/res/values-ru/material_design_colors_string.xml index d049d605..3511bec9 100644 --- a/app/src/main/res/values-ru/material_design_colors_string.xml +++ b/app/src/main/res/values-ru/material_design_colors_string.xml @@ -272,30 +272,30 @@ Коричневый (800) Коричневый (900) - - Серый (50) - Серый (100) - Серый (200) - Серый (300) - Серый (400) - Серый (500) - Серый (600) - Серый (700) - Серый (800) - Серый (900) + + Серый (50) + Серый (100) + Серый (200) + Серый (300) + Серый (400) + Серый (500) + Серый (600) + Серый (700) + Серый (800) + Серый (900) Черный (1000) Белый (1000) - - Синий серый (50) - Синий серый (100) - Синий серый (200) - Синий серый (300) - Синий серый (400) - Синий серый (500) - Синий серый (600) - Синий серый (700) - Синий серый (800) - Синий серый (900) + + Синий серый (50) + Синий серый (100) + Синий серый (200) + Синий серый (300) + Синий серый (400) + Синий серый (500) + Синий серый (600) + Синий серый (700) + Синий серый (800) + Синий серый (900) \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 85cfdc7b..af1a3b6d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -902,8 +902,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-zh-rHK/material_design_colors_string.xml b/app/src/main/res/values-zh-rHK/material_design_colors_string.xml index f4599084..cf9766ae 100644 --- a/app/src/main/res/values-zh-rHK/material_design_colors_string.xml +++ b/app/src/main/res/values-zh-rHK/material_design_colors_string.xml @@ -272,30 +272,30 @@ 棕 (800) 棕 (900) - - 灰 (50) - 灰 (100) - 灰 (200) - 灰 (300) - 灰 (400) - 灰 (500) - 灰 (600) - 灰 (700) - 灰 (800) - 灰 (900) + + 灰 (50) + 灰 (100) + 灰 (200) + 灰 (300) + 灰 (400) + 灰 (500) + 灰 (600) + 灰 (700) + 灰 (800) + 灰 (900) 黑 (1000) 白 (1000) - - 藍灰 (50) - 藍灰 (100) - 藍灰 (200) - 藍灰 (300) - 藍灰 (400) - 藍灰 (500) - 藍灰 (600) - 藍灰 (700) - 藍灰 (800) - 藍灰 (900) + + 藍灰 (50) + 藍灰 (100) + 藍灰 (200) + 藍灰 (300) + 藍灰 (400) + 藍灰 (500) + 藍灰 (600) + 藍灰 (700) + 藍灰 (800) + 藍灰 (900) \ No newline at end of file diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 623625e8..8c4c2459 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -901,8 +901,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-zh-rTW/material_design_colors_string.xml b/app/src/main/res/values-zh-rTW/material_design_colors_string.xml index f4599084..cf9766ae 100644 --- a/app/src/main/res/values-zh-rTW/material_design_colors_string.xml +++ b/app/src/main/res/values-zh-rTW/material_design_colors_string.xml @@ -272,30 +272,30 @@ 棕 (800) 棕 (900) - - 灰 (50) - 灰 (100) - 灰 (200) - 灰 (300) - 灰 (400) - 灰 (500) - 灰 (600) - 灰 (700) - 灰 (800) - 灰 (900) + + 灰 (50) + 灰 (100) + 灰 (200) + 灰 (300) + 灰 (400) + 灰 (500) + 灰 (600) + 灰 (700) + 灰 (800) + 灰 (900) 黑 (1000) 白 (1000) - - 藍灰 (50) - 藍灰 (100) - 藍灰 (200) - 藍灰 (300) - 藍灰 (400) - 藍灰 (500) - 藍灰 (600) - 藍灰 (700) - 藍灰 (800) - 藍灰 (900) + + 藍灰 (50) + 藍灰 (100) + 藍灰 (200) + 藍灰 (300) + 藍灰 (400) + 藍灰 (500) + 藍灰 (600) + 藍灰 (700) + 藍灰 (800) + 藍灰 (900) \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 6520e3f9..601a9f71 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -901,8 +901,25 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Material + Default + Custom + Color palette diff --git a/app/src/main/res/values-zh/android_colors_string.xml b/app/src/main/res/values-zh/android_colors_string.xml index deccc9c9..09afb214 100644 --- a/app/src/main/res/values-zh/android_colors_string.xml +++ b/app/src/main/res/values-zh/android_colors_string.xml @@ -4,17 +4,11 @@ - 暗灰 - 暗灰 - 绿 - 绿 亮灰 - 亮灰 品红 / 洋红 - 品红 / 洋红 海军蓝 / 藏青 橄榄 diff --git a/app/src/main/res/values-zh/css_colors_string.xml b/app/src/main/res/values-zh/css_colors_string.xml index 1bad55d2..5062a032 100644 --- a/app/src/main/res/values-zh/css_colors_string.xml +++ b/app/src/main/res/values-zh/css_colors_string.xml @@ -21,12 +21,10 @@ 玉米丝 绯红 - 暗蓝 暗青 暗金菊 暗灰 - 暗灰 暗绿 暗卡其 暗洋红 @@ -38,13 +36,11 @@ 暗海绿 暗岩蓝 暗岩灰 - 暗岩灰 暗绿松石 暗紫 深粉红 深天蓝 昏灰 - 昏灰 道奇蓝 砖红 花卉白 @@ -54,7 +50,6 @@ 金菊 - 绿 绿黄 蜜瓜绿 @@ -72,21 +67,18 @@ 亮青 亮金菊黄 亮灰 - 亮灰 亮绿 亮粉红 亮鲑红 亮海绿 浅天蓝 亮岩灰 - 亮岩灰 亮钢蓝 亮黄 鲜绿 / 莱姆 柠檬绿 亚麻 洋红 / 品红 - 洋红 / 品红 中碧蓝 中蓝 @@ -134,7 +126,6 @@ 天空蓝 岩蓝 岩灰 - 岩灰 春绿 钢青 diff --git a/app/src/main/res/values-zh/material_design_colors_string.xml b/app/src/main/res/values-zh/material_design_colors_string.xml index f7c18bb5..bb11beeb 100644 --- a/app/src/main/res/values-zh/material_design_colors_string.xml +++ b/app/src/main/res/values-zh/material_design_colors_string.xml @@ -272,30 +272,30 @@ 棕 (800) 棕 (900) - - 灰 (50) - 灰 (100) - 灰 (200) - 灰 (300) - 灰 (400) - 灰 (500) - 灰 (600) - 灰 (700) - 灰 (800) - 灰 (900) + + 灰 (50) + 灰 (100) + 灰 (200) + 灰 (300) + 灰 (400) + 灰 (500) + 灰 (600) + 灰 (700) + 灰 (800) + 灰 (900) 黑 (1000) 白 (1000) - - 蓝灰 (50) - 蓝灰 (100) - 蓝灰 (200) - 蓝灰 (300) - 蓝灰 (400) - 蓝灰 (500) - 蓝灰 (600) - 蓝灰 (700) - 蓝灰 (800) - 蓝灰 (900) + + 蓝灰 (50) + 蓝灰 (100) + 蓝灰 (200) + 蓝灰 (300) + 蓝灰 (400) + 蓝灰 (500) + 蓝灰 (600) + 蓝灰 (700) + 蓝灰 (800) + 蓝灰 (900) \ No newline at end of file diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 18dba29a..e33e322f 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -901,8 +901,25 @@ 切换至新布局 切换至传统布局 搜索颜色 - 定位当前颜色 + 定位当前主题色 新建颜色库 调色盘 + WEB 颜色库 + CSS 颜色库 + Android 颜色库 + 材料设计 (Material Design) 颜色库 + 默认颜色库 + 背景亮色 + 背景暗色 + 颜色库 + 默认颜色 + 材料设计颜色 + Android 颜色 + CSS 颜色 + WEB 颜色 + 材料设计 + 默认 + 自定义 + 调色盘 diff --git a/app/src/main/res/values-zh/web_colors_string.xml b/app/src/main/res/values-zh/web_colors_string.xml index 3a536c81..c56b07cd 100644 --- a/app/src/main/res/values-zh/web_colors_string.xml +++ b/app/src/main/res/values-zh/web_colors_string.xml @@ -85,7 +85,7 @@ 紫红 庚斯博罗灰 幽灵白 - / GOLD 金 + 金菊 草绿 @@ -107,7 +107,7 @@ 卡其 天青石蓝 薰衣草紫 - / PERIWINKLE 薰衣草蓝 / 长春花 + 薰衣草蓝 / 长春花 薰衣草紫红 亮紫 薰衣草雾 @@ -129,7 +129,7 @@ 亮紫 亮黄 紫丁香 - / LIGHT_LIME 柠檬绿 / 亮柠檬绿 + 柠檬绿 / 亮柠檬绿 柠檬绿 亚麻 洋红 / 品红 @@ -162,7 +162,7 @@ 苔藓绿 芥末黄 那瓦霍白 - / NAVY_BLUE 海军蓝 / 藏青 + 海军蓝 / 藏青 旧蕾丝 陈玫红 diff --git a/app/src/main/res/values/android_colors.xml b/app/src/main/res/values/android_colors.xml index 7dde875b..85018d39 100644 --- a/app/src/main/res/values/android_colors.xml +++ b/app/src/main/res/values/android_colors.xml @@ -4,17 +4,11 @@ #000000 #0000FF #00FFFF - #00FFFF #444444 - #444444 #888888 - #888888 #00FF00 - #00FF00 #CCCCCC - #CCCCCC #FF00FF - #FF00FF #800000 #000080 #808000 diff --git a/app/src/main/res/values/android_colors_string.xml b/app/src/main/res/values/android_colors_string.xml index eab1f650..a13fca7e 100644 --- a/app/src/main/res/values/android_colors_string.xml +++ b/app/src/main/res/values/android_colors_string.xml @@ -3,18 +3,12 @@ Black Blue - Cyan - Aqua + Cyan / Aqua Dark gray - Dark grey Gray - Grey - Green - Lime + Green / Lime Light gray - Light grey - Magenta - Fuchsia + Magenta / Fuchsia Maroon Navy Olive diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index bd73032b..0ae4ac32 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,7 +2,7 @@ #DE212121 - #212121 + @color/md_gray_900 #DEFBFBFB #FBFBFB #DE252525 @@ -12,13 +12,14 @@ @color/day @color/day_full #B3212121 + #9A212121 #4D212121 #33212121 @color/night @color/night_full - #FFFFFF - #FFFFFF - @color/day_full + @color/md_gray_50 + @color/md_gray_50 + @color/md_gray_900 #E5E5E5 @color/day_night @color/day_night_full @@ -33,13 +34,14 @@ #111214 @color/md_teal_800 + @color/md_blue_gray_800 - #DFC0C0C0 - #CC000000 - #FF43A047 - #FF1976D2 - #FFC62828 - #FFE254FF + #BDBDBD + #111214 + #43A047 + #1976D2 + #C62828 + #E254FF @@ -48,7 +50,7 @@ - #FFFFFF + #FAFAFA #E0E0E0 #DCEDC8 #B3E5FC @@ -100,8 +102,8 @@ #DCEDC8 #00C853 - #FFFFFF - #FFFFFF + #FAFAFA + #FAFAFA #F2F3F5 #F0F0F0 @@ -161,8 +163,8 @@ @color/day_full #F8F8F8 #ef5350 - #ffffff - #616161 + @color/md_white_1000 + @color/md_gray_700 #99262626 #cc181818 diff --git a/app/src/main/res/values/css_colors.xml b/app/src/main/res/values/css_colors.xml index 0db0396c..28983473 100644 --- a/app/src/main/res/values/css_colors.xml +++ b/app/src/main/res/values/css_colors.xml @@ -21,12 +21,10 @@ #FFF8DC #DC143C #00FFFF - #00FFFF #00008B #008B8B #B8860B #A9A9A9 - #A9A9A9 #006400 #BDB76B #8B008B @@ -38,13 +36,11 @@ #8FBC8F #483D8B #2F4F4F - #2F4F4F #00CED1 #9400D3 #FF1493 #00BFFF #696969 - #696969 #1E90FF #B22222 #FFFAF0 @@ -54,7 +50,6 @@ #FFD700 #DAA520 #808080 - #808080 #008000 #ADFF2F #F0FFF0 @@ -72,21 +67,18 @@ #E0FFFF #FAFAD2 #D3D3D3 - #D3D3D3 #90EE90 #FFB6C1 #FFA07A #20B2AA #87CEFA #778899 - #778899 #B0C4DE #FFFFE0 #00FF00 #32CD32 #FAF0E6 #FF00FF - #FF00FF #800000 #66CDAA #0000CD @@ -134,7 +126,6 @@ #87CEEB #6A5ACD #708090 - #708090 #FFFAFA #00FF7F #4682B4 diff --git a/app/src/main/res/values/css_colors_string.xml b/app/src/main/res/values/css_colors_string.xml index 3a5ad1c4..fe8141d1 100644 --- a/app/src/main/res/values/css_colors_string.xml +++ b/app/src/main/res/values/css_colors_string.xml @@ -20,13 +20,11 @@ Cornflower blue Corn silk Crimson - Cyan - Aqua + Cyan / Aqua Dark blue Dark cyan Dark goldenrod Dark gray - Dark grey Dark green Dark khaki Dark magenta @@ -38,13 +36,11 @@ Dark sea green Dark slate blue Dark slate gray - Dark slate grey Dark turquoise Dark violet Deep pink Deep sky blue Dim gray - Dim grey Dodger blue Fire brick Floral white @@ -54,7 +50,6 @@ Gold Goldenrod Gray - Grey Green Green yellow Honeydew @@ -72,21 +67,18 @@ Light cyan Light goldenrod yellow Light gray - Light grey Light green Light pink Light salmon Light sea green Light sky blue Light slate gray - Light slate grey Light steel blue Light yellow Lime Lime green Linen - Magenta - Fuchsia + Magenta / Fuchsia Maroon Medium aquamarine Medium blue @@ -134,7 +126,6 @@ Sky blue Slate blue Slate gray - Slate grey Snow Spring green Steel blue diff --git a/app/src/main/res/values/material_design_colors.xml b/app/src/main/res/values/material_design_colors.xml index d069932f..ca49aa83 100644 --- a/app/src/main/res/values/material_design_colors.xml +++ b/app/src/main/res/values/material_design_colors.xml @@ -272,30 +272,30 @@ #4E342E #3E2723 - - #FAFAFA - #F5F5F5 - #EEEEEE - #E0E0E0 - #BDBDBD - #9E9E9E - #757575 - #616161 - #424242 - #212121 + + #FAFAFA + #F5F5F5 + #EEEEEE + #E0E0E0 + #BDBDBD + #9E9E9E + #757575 + #616161 + #424242 + #212121 #000000 #FFFFFF - - #ECEFF1 - #CFD8DC - #B0BBC5 - #90A4AE - #78909C - #607D8B - #546E7A - #455A64 - #37474F - #263238 + + #ECEFF1 + #CFD8DC + #B0BBC5 + #90A4AE + #78909C + #607D8B + #546E7A + #455A64 + #37474F + #263238 \ No newline at end of file diff --git a/app/src/main/res/values/material_design_colors_string.xml b/app/src/main/res/values/material_design_colors_string.xml index 81f21f5d..45ed32df 100644 --- a/app/src/main/res/values/material_design_colors_string.xml +++ b/app/src/main/res/values/material_design_colors_string.xml @@ -272,30 +272,30 @@ Brown (800) Brown (900) - - Grey (50) - Grey (100) - Grey (200) - Grey (300) - Grey (400) - Grey (500) - Grey (600) - Grey (700) - Grey (800) - Grey (900) + + Gray (50) + Gray (100) + Gray (200) + Gray (300) + Gray (400) + Gray (500) + Gray (600) + Gray (700) + Gray (800) + Gray (900) Black (1000) White (1000) - - Blue grey (50) - Blue grey (100) - Blue grey (200) - Blue grey (300) - Blue grey (400) - Blue grey (500) - Blue grey (600) - Blue grey (700) - Blue grey (800) - Blue grey (900) + + Blue gray (50) + Blue gray (100) + Blue gray (200) + Blue gray (300) + Blue gray (400) + Blue gray (500) + Blue gray (600) + Blue gray (700) + Blue gray (800) + Blue gray (900) \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f6b9d27c..441b5dd7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1140,8 +1140,28 @@ Switch to new layout Switch to legacy layout Search color - Locate current color + Locate current theme color New color library Color palette + WEB color library + CSS color library + Android color library + Material design color library + Default color library + Backgournd light + Background night + Color library + Default colors + Material colors + Android colors + CSS colors + WEB colors + Default + Material + Android + CSS + WEB + Custom + Color palette diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index efce8c09..3fcf0227 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -39,10 +39,10 @@ @@ -110,6 +110,7 @@ diff --git a/app/src/main/res/values/web_colors_string.xml b/app/src/main/res/values/web_colors_string.xml index bf0689ad..183cada3 100644 --- a/app/src/main/res/values/web_colors_string.xml +++ b/app/src/main/res/values/web_colors_string.xml @@ -85,7 +85,7 @@ Fuchsia Gainsboro Ghost white - Golden + Golden / Gold Goldenrod Grass green Gray @@ -107,7 +107,7 @@ Khaki Lapis lazuli Lavender - Lavender blue + Lavender blue / Periwinkle Lavender blush Lavender magenta Lavender mist @@ -129,7 +129,7 @@ Light violet Light yellow Lilac - Lime + Lime / Light lime Lime green Linen Magenta @@ -162,7 +162,7 @@ Moss green Mustard Navajo white - Navy + Navy / Navy blue Ocher Old lace Old rose diff --git a/modules/color-picker/src/main/res/values-be/strings.xml b/modules/color-picker/src/main/res/values-be/strings.xml deleted file mode 100644 index dfc8dae3..00000000 --- a/modules/color-picker/src/main/res/values-be/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Вылучыце колер - Перадусталёўкі - Асаблівы - Выбраць - Празрыстасць - \ No newline at end of file diff --git a/modules/color-picker/src/main/res/values-de/strings.xml b/modules/color-picker/src/main/res/values-de/strings.xml deleted file mode 100644 index 187181a3..00000000 --- a/modules/color-picker/src/main/res/values-de/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Farbe auswählen - Voreinstellungen - Benutzerdefiniert - Auswählen - Transparenz - diff --git a/modules/color-picker/src/main/res/values-cs/strings.xml b/modules/color-picker/src/main/res/values-en/strings.xml similarity index 74% rename from modules/color-picker/src/main/res/values-cs/strings.xml rename to modules/color-picker/src/main/res/values-en/strings.xml index 9dd0bf1c..416b5d67 100644 --- a/modules/color-picker/src/main/res/values-cs/strings.xml +++ b/modules/color-picker/src/main/res/values-en/strings.xml @@ -15,9 +15,9 @@ --> - Vyberte barvu - Přednastavené - Vlastní - Vybrat - Průhlednost + Select a Color + Presets + Custom + Select + Transparency \ No newline at end of file diff --git a/modules/color-picker/src/main/res/values-fr-rFR/strings.xml b/modules/color-picker/src/main/res/values-fr/strings.xml similarity index 100% rename from modules/color-picker/src/main/res/values-fr-rFR/strings.xml rename to modules/color-picker/src/main/res/values-fr/strings.xml diff --git a/modules/color-picker/src/main/res/values-it-rIT/strings.xml b/modules/color-picker/src/main/res/values-it-rIT/strings.xml deleted file mode 100644 index 276fa31c..00000000 --- a/modules/color-picker/src/main/res/values-it-rIT/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - Personalizzato - Seleziona un Colore - Predefiniti - Seleziona - Trasparenza - diff --git a/modules/color-picker/src/main/res/values-iw/strings.xml b/modules/color-picker/src/main/res/values-iw/strings.xml deleted file mode 100644 index 1eea7d44..00000000 --- a/modules/color-picker/src/main/res/values-iw/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - בחירת צבע - קבוע מראש - מותאם אישית - בחירה - שקיפות - \ No newline at end of file diff --git a/modules/color-picker/src/main/res/values-sk/strings.xml b/modules/color-picker/src/main/res/values-ko/strings.xml similarity index 74% rename from modules/color-picker/src/main/res/values-sk/strings.xml rename to modules/color-picker/src/main/res/values-ko/strings.xml index 56a4273b..fbcf6e53 100644 --- a/modules/color-picker/src/main/res/values-sk/strings.xml +++ b/modules/color-picker/src/main/res/values-ko/strings.xml @@ -15,9 +15,9 @@ --> - Vyberte farbu - Prednastavené - Vlastné - Vybrať - Priehľadnosť + 색상 선택 + 프리셋 + 커스텀 + 선택 + 투명도 \ No newline at end of file diff --git a/modules/color-picker/src/main/res/values-nl-rNL/strings.xml b/modules/color-picker/src/main/res/values-nl-rNL/strings.xml deleted file mode 100644 index 362de70d..00000000 --- a/modules/color-picker/src/main/res/values-nl-rNL/strings.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Selecteer een kleur - Vooraf ingesteld - Aangepast - Kiezen - Transparantie - diff --git a/modules/color-picker/src/main/res/values-pt/strings.xml b/modules/color-picker/src/main/res/values-pt/strings.xml deleted file mode 100644 index 70e53716..00000000 --- a/modules/color-picker/src/main/res/values-pt/strings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Selecionar uma cor - Predefinidos - Personalizar - Selecionar - Transparência - \ No newline at end of file diff --git a/modules/color-picker/src/main/res/values-pl/strings.xml b/modules/color-picker/src/main/res/values-zh-rHK/strings.xml similarity index 74% rename from modules/color-picker/src/main/res/values-pl/strings.xml rename to modules/color-picker/src/main/res/values-zh-rHK/strings.xml index 8ccbe8ef..eda2dbd5 100644 --- a/modules/color-picker/src/main/res/values-pl/strings.xml +++ b/modules/color-picker/src/main/res/values-zh-rHK/strings.xml @@ -15,9 +15,9 @@ --> - Wybierz kolor - Kolory domyślne - Dostosuj - Wybierz - Przezroczystość + 選擇顏色 + 預置顏色 + 自定義顏色 + 確認 + 透明度 \ No newline at end of file diff --git a/modules/color-picker/src/main/res/values-tr/strings.xml b/modules/color-picker/src/main/res/values-zh-rTW/strings.xml similarity index 73% rename from modules/color-picker/src/main/res/values-tr/strings.xml rename to modules/color-picker/src/main/res/values-zh-rTW/strings.xml index b4f559b2..eda2dbd5 100644 --- a/modules/color-picker/src/main/res/values-tr/strings.xml +++ b/modules/color-picker/src/main/res/values-zh-rTW/strings.xml @@ -1,9 +1,12 @@ - Renk Seçin - Ön Ayarlar - Özel - Seç - Şeffaflık - + 選擇顏色 + 預置顏色 + 自定義顏色 + 確認 + 透明度 + \ No newline at end of file diff --git a/version.properties b/version.properties index a1eb73dd..33a2fd4f 100644 --- a/version.properties +++ b/version.properties @@ -1,5 +1,5 @@ -#Tue Mar 25 22:54:07 CST 2025 -BUILD_TIME=1742914447380 +#Thu Mar 27 19:59:19 CST 2025 +BUILD_TIME=1743076759401 COMPILE_SDK_VERSION=35 JAVA_VERSION=23 JAVA_VERSION_MIN_RADICAL=0 @@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13 RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3 TARGET_SDK_VERSION=35 TARGET_SDK_VERSION_INRT=29 -VERSION_BUILD=3057 +VERSION_BUILD=3065 VERSION_NAME=6.6.2 Alpha5 VSCODE_EXT_REQUIRED_VERSION=1.0.8