6.6.2 - Alpha5 - 主题色设置页面增加新布局支持 (初步)
This commit is contained in:
@@ -4,7 +4,8 @@
|
|||||||
"released_date": "2025/01/03",
|
"released_date": "2025/01/03",
|
||||||
"feature": [
|
"feature": [
|
||||||
"ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法",
|
"ui.statusBarAppearanceLight/statusBarAppearanceLightBy/navigationBarColor 等方法",
|
||||||
"设置页面增加 \"文件扩展名\" 设置选项"
|
"设置页面增加 \"文件扩展名\" 设置选项",
|
||||||
|
"主题色设置页面增加新布局支持"
|
||||||
],
|
],
|
||||||
"fix": [
|
"fix": [
|
||||||
"Android 15 状态栏背景颜色与主题色不一致的问题",
|
"Android 15 状态栏背景颜色与主题色不一致的问题",
|
||||||
|
|||||||
@@ -258,8 +258,7 @@
|
|||||||
|
|
||||||
<activity android:name="org.autojs.autojs.ui.project.ProjectConfigActivity" />
|
<activity android:name="org.autojs.autojs.ui.project.ProjectConfigActivity" />
|
||||||
|
|
||||||
<activity
|
<activity android:name="org.autojs.autojs.ui.keystore.ManageKeyStoreActivity" />
|
||||||
android:name="org.autojs.autojs.ui.keystore.ManageKeyStoreActivity" />
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="org.autojs.autojs.ui.log.LogActivity"
|
android:name="org.autojs.autojs.ui.log.LogActivity"
|
||||||
@@ -574,6 +573,10 @@
|
|||||||
<!-- </intent-filter>-->
|
<!-- </intent-filter>-->
|
||||||
<!--</receiver>-->
|
<!--</receiver>-->
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="org.autojs.autojs.theme.app.ColorSelectLegacyActivity"
|
||||||
|
android:theme="@style/MtAppTheme.FullScreen" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="org.autojs.autojs.theme.app.ColorSelectActivity"
|
android:name="org.autojs.autojs.theme.app.ColorSelectActivity"
|
||||||
android:theme="@style/MtAppTheme.FullScreen" />
|
android:theme="@style/MtAppTheme.FullScreen" />
|
||||||
|
|||||||
@@ -78,10 +78,10 @@ object ThemeColorManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getDayOrNightColorByLuminance(context: Context): Int = context.getColor(getDayOrNightColorResByLuminance())
|
fun getDayOrNightColorByLuminance(context: Context): Int = ViewUtils.getDayOrNightColorByLuminance(context, colorPrimary)
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getDayOrNightColorResByLuminance(): Int = if (isThemeColorLuminanceLight()) R.color.day else R.color.night
|
fun getDayOrNightColorResByLuminance(): Int = ViewUtils.getDayOrNightColorResByLuminance(colorPrimary)
|
||||||
|
|
||||||
private object BackgroundColorManager {
|
private object BackgroundColorManager {
|
||||||
|
|
||||||
|
|||||||
@@ -1,183 +1,48 @@
|
|||||||
package org.autojs.autojs.theme.app
|
package org.autojs.autojs.theme.app
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.graphics.PorterDuff
|
|
||||||
import android.graphics.PorterDuffColorFilter
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.Menu
|
||||||
import android.view.ViewAnimationUtils
|
import android.view.MenuItem
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
|
||||||
import org.autojs.autojs.core.pref.Pref
|
|
||||||
import org.autojs.autojs.theme.ThemeChangeNotifier
|
|
||||||
import org.autojs.autojs.theme.ThemeColor
|
|
||||||
import org.autojs.autojs.theme.ThemeColorManager
|
|
||||||
import org.autojs.autojs.ui.BaseActivity
|
|
||||||
import org.autojs.autojs.util.ColorUtils
|
|
||||||
import org.autojs.autojs.util.StringUtils.key
|
|
||||||
import org.autojs.autojs.util.ViewUtils
|
|
||||||
import org.autojs.autojs6.R
|
import org.autojs.autojs6.R
|
||||||
import org.autojs.autojs6.databinding.MtActivityColorSelectBinding
|
import org.autojs.autojs6.databinding.MtActivityColorSelectBinding
|
||||||
import kotlin.math.hypot
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on Mar 5, 2017.
|
* Created by SuperMonster003 on Mar 20, 2025.
|
||||||
* Modified by SuperMonster003 as of Sep 22, 2022.
|
|
||||||
* Transformed by SuperMonster003 on Sep 22, 2022.
|
|
||||||
*/
|
*/
|
||||||
class ColorSelectActivity : BaseActivity() {
|
class ColorSelectActivity : ColorSelectBaseActivity() {
|
||||||
|
|
||||||
override val handleStatusBarThemeColorAutomatically = false
|
|
||||||
|
|
||||||
private lateinit var binding: MtActivityColorSelectBinding
|
private lateinit var binding: MtActivityColorSelectBinding
|
||||||
|
|
||||||
private lateinit var mAppBarLayout: AppBarLayout
|
|
||||||
private lateinit var mTitle: String
|
|
||||||
private lateinit var mColorSettingRecyclerView: ColorSettingRecyclerView
|
|
||||||
|
|
||||||
private var mCurrentColor = 0
|
|
||||||
|
|
||||||
private val mOnItemClickListener = object : OnItemClickListener {
|
|
||||||
override fun onItemClick(v: View?, position: Int) {
|
|
||||||
mColorSettingRecyclerView.selectedThemeColor?.let {
|
|
||||||
setColorWithAnimation(mAppBarLayout, it.colorPrimary)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
handleIntent()
|
|
||||||
MtActivityColorSelectBinding.inflate(layoutInflater).also {
|
MtActivityColorSelectBinding.inflate(layoutInflater).also {
|
||||||
binding = it
|
binding = it
|
||||||
setUpUI(it)
|
setContentView(it.root)
|
||||||
ViewUtils.excludePaddingClippableViewFromNavigationBar(it.colorSettingRecyclerView)
|
setUpToolbar(it.toolbar)
|
||||||
|
setUpColorSettingRecyclerView(it.colorSettingRecyclerView)
|
||||||
|
setUpAppBar(it.appBar, it.appBarContainer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleIntent() {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
mTitle = intent.getStringExtra("title") ?: getString(R.string.mt_color_picker_title)
|
menuInflater.inflate(R.menu.menu_color_select, menu)
|
||||||
|
return super.onCreateOptionsMenu(menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setUpUI(binding: MtActivityColorSelectBinding) {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
setContentView(binding.root)
|
when (item.itemId) {
|
||||||
mCurrentColor = ThemeColorManager.colorPrimary
|
R.id.action_toggle_color_select_layout -> {
|
||||||
mAppBarLayout = binding.appBar.apply { setBackgroundColor(mCurrentColor) }
|
isLegacyLayout = true
|
||||||
setUpToolbar(binding)
|
startActivity(this)
|
||||||
setUpColorSettingRecyclerView(binding)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setUpToolbar(binding: MtActivityColorSelectBinding) {
|
|
||||||
binding.toolbar.also { toolbar ->
|
|
||||||
toolbar.title = mTitle
|
|
||||||
setSupportActionBar(toolbar)
|
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
|
||||||
toolbar.setNavigationOnClickListener { finish() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setUpColorSettingRecyclerView(binding: MtActivityColorSelectBinding) {
|
|
||||||
mColorSettingRecyclerView = binding.colorSettingRecyclerView.apply {
|
|
||||||
setCustomColor()
|
|
||||||
setSelectedColor(mCurrentColor)
|
|
||||||
setOnItemClickListener(mOnItemClickListener)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun finish() {
|
|
||||||
mColorSettingRecyclerView.selectedThemeColor?.let {
|
|
||||||
ThemeColorManager.setThemeColor(it.colorPrimary)
|
|
||||||
Pref.putString(key(R.string.key_theme_color), getColorString(this))
|
|
||||||
ThemeChangeNotifier.notifyThemeChanged()
|
|
||||||
}
|
|
||||||
super.finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun initThemeColors() {
|
|
||||||
super.initThemeColors()
|
|
||||||
setUpToolbarColors()
|
|
||||||
setUpStatusBarAppearanceLight()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setUpToolbarColors() {
|
|
||||||
val toolbar = binding.toolbar
|
|
||||||
val aimColor = when {
|
|
||||||
ColorUtils.isLuminanceLight(mCurrentColor) -> getColor(R.color.day)
|
|
||||||
else -> getColor(R.color.night)
|
|
||||||
}
|
|
||||||
toolbar.setTitleTextColor(aimColor)
|
|
||||||
toolbar.setSubtitleTextColor(aimColor)
|
|
||||||
toolbar.navigationIcon?.let { navigationIcon ->
|
|
||||||
navigationIcon.colorFilter = PorterDuffColorFilter(aimColor, PorterDuff.Mode.SRC_IN)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setUpStatusBarAppearanceLight() {
|
|
||||||
ViewUtils.setStatusBarAppearanceLight(this, ColorUtils.isLuminanceDark(mCurrentColor))
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setColorWithAnimation(view: View, colorTo: Int) {
|
|
||||||
binding.appBarContainer.setBackgroundColor(mCurrentColor)
|
|
||||||
view.setBackgroundColor(colorTo)
|
|
||||||
mCurrentColor = colorTo
|
|
||||||
|
|
||||||
initThemeColors()
|
|
||||||
|
|
||||||
ViewAnimationUtils.createCircularReveal(
|
|
||||||
/* view = */ view,
|
|
||||||
/* centerX = */ view.left,
|
|
||||||
/* centerY = */ view.bottom,
|
|
||||||
/* startRadius = */ 0f,
|
|
||||||
/* endRadius = */ hypot(view.width.toDouble(), view.height.toDouble()).toFloat()
|
|
||||||
).apply {
|
|
||||||
duration = 500L
|
|
||||||
start()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
const val SELECT_NONE = -1
|
|
||||||
|
|
||||||
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 customColorPosition: Int
|
|
||||||
get() = /* return mColors.size() - 1; */ 0
|
|
||||||
|
|
||||||
private val defaultColorPosition: Int
|
|
||||||
get() = customColorPosition + 1
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
fun startActivity(context: Context) {
|
|
||||||
Intent(context, ColorSelectActivity::class.java)
|
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
|
||||||
.putExtra("title", context.getString(R.string.mt_color_picker_title))
|
|
||||||
.let { context.startActivity(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getColorString(context: Context): String {
|
|
||||||
val index = Pref.getInt(KEY_SELECTED_COLOR_INDEX, defaultColorPosition)
|
|
||||||
val colorItem = getColorItems(context)[index]
|
|
||||||
return "${colorItem.name} [${ColorUtils.toString(colorItem.themeColor.colorPrimary).uppercase()}]"
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun getColorItems(context: Context): List<ColorItem> = ArrayList<Pair</* nameRes */ Int, /* colorInt */ Int>>()
|
|
||||||
.apply {
|
|
||||||
add(customColorPosition, Pair(Pref.getInt(KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800)), R.string.mt_custom))
|
|
||||||
add(defaultColorPosition, Pair(context.getColor(R.color.theme_color_default), R.string.theme_color_default))
|
|
||||||
addAll(ColorUtils.MATERIAL_COLOR_ITEMS.map { pair -> Pair(context.getColor(pair.first), pair.second) })
|
|
||||||
}
|
}
|
||||||
.map { (colorInt, nameRes) -> ColorItem(context.getString(nameRes), colorInt) }
|
R.id.action_locate_current_color -> {
|
||||||
|
|
||||||
|
}
|
||||||
|
R.id.action_search_color -> {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
package org.autojs.autojs.theme.app
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.Menu
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewAnimationUtils
|
||||||
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
|
import io.codetail.widget.RevealFrameLayout
|
||||||
|
import org.autojs.autojs.core.pref.Pref
|
||||||
|
import org.autojs.autojs.theme.ThemeChangeNotifier
|
||||||
|
import org.autojs.autojs.theme.ThemeColor
|
||||||
|
import org.autojs.autojs.theme.ThemeColorManager
|
||||||
|
import org.autojs.autojs.ui.BaseActivity
|
||||||
|
import org.autojs.autojs.util.ColorUtils
|
||||||
|
import org.autojs.autojs.util.StringUtils.key
|
||||||
|
import org.autojs.autojs.util.ViewUtils
|
||||||
|
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByColorLuminance
|
||||||
|
import org.autojs.autojs.util.ViewUtils.setNavigationIconColorByColorLuminance
|
||||||
|
import org.autojs.autojs.util.ViewUtils.setTitlesTextColorByColorLuminance
|
||||||
|
import org.autojs.autojs6.R
|
||||||
|
import kotlin.math.hypot
|
||||||
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Stardust on Mar 5, 2017.
|
||||||
|
* Modified by SuperMonster003 as of Sep 22, 2022.
|
||||||
|
* Transformed by SuperMonster003 on Sep 22, 2022.
|
||||||
|
*/
|
||||||
|
abstract class ColorSelectBaseActivity : BaseActivity() {
|
||||||
|
|
||||||
|
override val handleStatusBarThemeColorAutomatically = false
|
||||||
|
|
||||||
|
private lateinit var mToolbar: Toolbar
|
||||||
|
private lateinit var mAppBarLayout: AppBarLayout
|
||||||
|
private lateinit var mAppBarContainer: RevealFrameLayout
|
||||||
|
private lateinit var mColorSettingRecyclerView: ColorSettingRecyclerView
|
||||||
|
|
||||||
|
private lateinit var mTitle: String
|
||||||
|
|
||||||
|
private val mOnItemClickListener = object : OnItemClickListener {
|
||||||
|
override fun onItemClick(v: View?, position: Int) {
|
||||||
|
mColorSettingRecyclerView.selectedThemeColor?.let {
|
||||||
|
setColorWithAnimation(mAppBarLayout, it.colorPrimary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private var currentColor by Delegates.notNull<Int>()
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
mTitle = this.intent.getStringExtra("title") ?: this.getString(R.string.mt_color_picker_title)
|
||||||
|
currentColor = this.intent.getIntExtra("currentColor", ThemeColorManager.colorPrimary)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun setUpToolbar(toolbar: Toolbar) {
|
||||||
|
toolbar.apply {
|
||||||
|
title = mTitle
|
||||||
|
setSupportActionBar(this)
|
||||||
|
setNavigationOnClickListener { finish() }
|
||||||
|
setTitleTextAppearance(this@ColorSelectBaseActivity, R.style.TextAppearanceMainTitle)
|
||||||
|
mToolbar = this
|
||||||
|
}
|
||||||
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun setUpColorSettingRecyclerView(colorSettingRecyclerView: ColorSettingRecyclerView) {
|
||||||
|
mColorSettingRecyclerView = colorSettingRecyclerView.apply {
|
||||||
|
setCustomColor()
|
||||||
|
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), getColorString(this))
|
||||||
|
ThemeChangeNotifier.notifyThemeChanged()
|
||||||
|
}
|
||||||
|
super.finish()
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun finishWithoutSaving() {
|
||||||
|
super.finish()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun initThemeColors() {
|
||||||
|
super.initThemeColors()
|
||||||
|
mToolbar.setTitlesTextColorByColorLuminance(this, currentColor)
|
||||||
|
mToolbar.setNavigationIconColorByColorLuminance(this, currentColor)
|
||||||
|
ViewUtils.setStatusBarAppearanceLightByColorLuminance(this, currentColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
updateToolbarIconsColor()
|
||||||
|
return super.onCreateOptionsMenu(menu)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateToolbarIconsColor() {
|
||||||
|
mToolbar.setMenuIconsColorByColorLuminance(this, currentColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setColorWithAnimation(view: View, colorTo: Int) {
|
||||||
|
mAppBarContainer.setBackgroundColor(currentColor)
|
||||||
|
view.setBackgroundColor(colorTo)
|
||||||
|
currentColor = colorTo
|
||||||
|
|
||||||
|
initThemeColors()
|
||||||
|
updateToolbarIconsColor()
|
||||||
|
|
||||||
|
ViewAnimationUtils.createCircularReveal(
|
||||||
|
/* view = */ view,
|
||||||
|
/* centerX = */ view.left,
|
||||||
|
/* centerY = */ view.bottom,
|
||||||
|
/* startRadius = */ 0f,
|
||||||
|
/* endRadius = */ hypot(view.width.toDouble(), view.height.toDouble()).toFloat()
|
||||||
|
).apply {
|
||||||
|
duration = 500L
|
||||||
|
start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
const val SELECT_NONE = -1
|
||||||
|
|
||||||
|
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 customColorPosition: Int
|
||||||
|
get() = /* return mColors.size() - 1; */ 0
|
||||||
|
|
||||||
|
private val defaultColorPosition: Int
|
||||||
|
get() = customColorPosition + 1
|
||||||
|
|
||||||
|
var isLegacyLayout: Boolean
|
||||||
|
get() = Pref.getBoolean(R.string.key_color_select_activity_legacy_layout, false)
|
||||||
|
set(value) = Pref.putBoolean(R.string.key_color_select_activity_legacy_layout, value)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun startActivity(context: Context) {
|
||||||
|
val cls = when (isLegacyLayout) {
|
||||||
|
true -> ColorSelectLegacyActivity::class.java
|
||||||
|
else -> ColorSelectActivity::class.java
|
||||||
|
}
|
||||||
|
val intent = Intent(context, cls).apply {
|
||||||
|
putExtra("title", context.getString(R.string.mt_color_picker_title))
|
||||||
|
}
|
||||||
|
if (context is ColorSelectBaseActivity) {
|
||||||
|
intent.putExtra("currentColor", context.currentColor)
|
||||||
|
context.finishWithoutSaving()
|
||||||
|
}
|
||||||
|
context.startActivity(intent)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getColorString(context: Context): String {
|
||||||
|
val index = Pref.getInt(KEY_SELECTED_COLOR_INDEX, defaultColorPosition)
|
||||||
|
val colorItem = getColorItems(context)[index]
|
||||||
|
return "${colorItem.name} [${ColorUtils.toString(colorItem.themeColor.colorPrimary).uppercase()}]"
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun getColorItems(context: Context): List<ColorItem> = ArrayList<Pair</* nameRes */ Int, /* colorInt */ Int>>()
|
||||||
|
.apply {
|
||||||
|
add(customColorPosition, Pair(Pref.getInt(KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800)), R.string.mt_custom))
|
||||||
|
add(defaultColorPosition, Pair(context.getColor(R.color.theme_color_default), R.string.theme_color_default))
|
||||||
|
addAll(ColorUtils.MATERIAL_COLOR_ITEMS.map { pair -> Pair(context.getColor(pair.first), pair.second) })
|
||||||
|
}
|
||||||
|
.map { (colorInt, nameRes) -> ColorItem(context.getString(nameRes), colorInt) }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package org.autojs.autojs.theme.app
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.Menu
|
||||||
|
import android.view.MenuItem
|
||||||
|
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
|
||||||
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,7 +6,6 @@ import android.content.res.ColorStateList
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.View.OnClickListener
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
@@ -32,20 +31,20 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle)
|
constructor(context: Context, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle)
|
||||||
|
|
||||||
private var mOnItemClickListener: ColorSelectActivity.OnItemClickListener? = null
|
private var mOnItemClickListener: ColorSelectBaseActivity.OnItemClickListener? = null
|
||||||
|
|
||||||
private var mSelectedPosition = ColorSelectActivity.SELECT_NONE
|
private var mSelectedPosition = ColorSelectBaseActivity.SELECT_NONE
|
||||||
|
|
||||||
val selectedThemeColor: ThemeColor?
|
val selectedThemeColor: ThemeColor?
|
||||||
get() = ColorSelectActivity.getColorItems(context)[mSelectedPosition].themeColor.takeUnless { mSelectedPosition < 0 }
|
get() = ColorSelectBaseActivity.getColorItems(context)[mSelectedPosition].themeColor.takeUnless { mSelectedPosition < 0 }
|
||||||
|
|
||||||
private val customColor: Int
|
private val customColor: Int
|
||||||
get() = Pref.getInt(ColorSelectActivity.KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800))
|
get() = Pref.getInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, context.getColor(R.color.md_blue_grey_800))
|
||||||
|
|
||||||
private val mActualOnItemClickListener = OnClickListener { v ->
|
private val mActualOnItemClickListener = OnClickListener { v ->
|
||||||
getChildViewHolder(v)?.let { holder ->
|
getChildViewHolder(v)?.let { holder ->
|
||||||
val pos = holder.bindingAdapterPosition
|
val pos = holder.bindingAdapterPosition
|
||||||
if (pos == ColorSelectActivity.customColorPosition) {
|
if (pos == ColorSelectBaseActivity.customColorPosition) {
|
||||||
showColorPicker(v)
|
showColorPicker(v)
|
||||||
} else {
|
} else {
|
||||||
setSelectedPosition(pos)
|
setSelectedPosition(pos)
|
||||||
@@ -62,7 +61,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
fun setSelectedPosition(currentPosition: Int) {
|
fun setSelectedPosition(currentPosition: Int) {
|
||||||
if (mSelectedPosition != ColorSelectActivity.SELECT_NONE) {
|
if (mSelectedPosition != ColorSelectBaseActivity.SELECT_NONE) {
|
||||||
adapter!!.notifyItemChanged(mSelectedPosition)
|
adapter!!.notifyItemChanged(mSelectedPosition)
|
||||||
mSelectedPosition = currentPosition
|
mSelectedPosition = currentPosition
|
||||||
adapter!!.notifyItemChanged(currentPosition)
|
adapter!!.notifyItemChanged(currentPosition)
|
||||||
@@ -70,21 +69,21 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
mSelectedPosition = currentPosition
|
mSelectedPosition = currentPosition
|
||||||
adapter!!.notifyDataSetChanged()
|
adapter!!.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
Pref.putInt(ColorSelectActivity.KEY_SELECTED_COLOR_INDEX, mSelectedPosition)
|
Pref.putInt(ColorSelectBaseActivity.KEY_SELECTED_COLOR_INDEX, mSelectedPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setSelectedColor(colorPrimary: Int) {
|
fun setSelectedColor(colorPrimary: Int) {
|
||||||
for ((i, colorItem) in ColorSelectActivity.getColorItems(context).withIndex()) {
|
for ((i, colorItem) in ColorSelectBaseActivity.getColorItems(context).withIndex()) {
|
||||||
if (colorItem.themeColor.colorPrimary == colorPrimary) {
|
if (colorItem.themeColor.colorPrimary == colorPrimary) {
|
||||||
setSelectedPosition(i)
|
setSelectedPosition(i)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mSelectedPosition = ColorSelectActivity.SELECT_NONE
|
mSelectedPosition = ColorSelectBaseActivity.SELECT_NONE
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setCustomColor(color: Int) {
|
private fun setCustomColor(color: Int) {
|
||||||
ColorSelectActivity.getColorItems(context)[ColorSelectActivity.customColorPosition].themeColor.colorPrimary = color
|
ColorSelectBaseActivity.getColorItems(context)[ColorSelectBaseActivity.customColorPosition].themeColor.colorPrimary = color
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setCustomColor() {
|
fun setCustomColor() {
|
||||||
@@ -104,10 +103,10 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
setColorPickerDialogListener(object : ColorPickerDialogListener {
|
setColorPickerDialogListener(object : ColorPickerDialogListener {
|
||||||
override fun onColorSelected(dialogId: Int, @ColorInt color: Int) {
|
override fun onColorSelected(dialogId: Int, @ColorInt color: Int) {
|
||||||
val c = color or -0x1000000
|
val c = color or -0x1000000
|
||||||
Pref.putInt(ColorSelectActivity.KEY_CUSTOM_COLOR, c)
|
Pref.putInt(ColorSelectBaseActivity.KEY_CUSTOM_COLOR, c)
|
||||||
setCustomColor(c)
|
setCustomColor(c)
|
||||||
setSelectedPosition(ColorSelectActivity.customColorPosition)
|
setSelectedPosition(ColorSelectBaseActivity.customColorPosition)
|
||||||
mOnItemClickListener?.onItemClick(v, ColorSelectActivity.customColorPosition)
|
mOnItemClickListener?.onItemClick(v, ColorSelectBaseActivity.customColorPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDialogDismissed(dialogId: Int) {}
|
override fun onDialogDismissed(dialogId: Int) {}
|
||||||
@@ -116,7 +115,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
.show((context as FragmentActivity).supportFragmentManager, "Tag")
|
.show((context as FragmentActivity).supportFragmentManager, "Tag")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setOnItemClickListener(onItemClickListener: ColorSelectActivity.OnItemClickListener?) {
|
fun setOnItemClickListener(onItemClickListener: ColorSelectBaseActivity.OnItemClickListener?) {
|
||||||
mOnItemClickListener = onItemClickListener
|
mOnItemClickListener = onItemClickListener
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +126,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
val item = ColorSelectActivity.getColorItems(context)[position]
|
val item = ColorSelectBaseActivity.getColorItems(context)[position]
|
||||||
holder.apply {
|
holder.apply {
|
||||||
setColor(item.themeColor.colorPrimary)
|
setColor(item.themeColor.colorPrimary)
|
||||||
nameView.text = item.name
|
nameView.text = item.name
|
||||||
@@ -136,7 +135,7 @@ class ColorSettingRecyclerView : ThemeColorRecyclerView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = ColorSelectActivity.getColorItems(context).size
|
override fun getItemCount() = ColorSelectBaseActivity.getColorItems(context).size
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package org.autojs.autojs.theme.preference
|
package org.autojs.autojs.theme.preference
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.content.res.TypedArray
|
import android.content.res.TypedArray
|
||||||
@@ -39,7 +38,6 @@ class ThemeColorSwitchPreference : SwitchPreference, ThemeColorMutable, LongClic
|
|||||||
init(context, attrs, defStyleAttr, 0)
|
init(context, attrs, defStyleAttr, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("RestrictedApi")
|
|
||||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||||
init(context, attrs, 0, 0)
|
init(context, attrs, 0, 0)
|
||||||
}
|
}
|
||||||
@@ -87,7 +85,6 @@ class ThemeColorSwitchPreference : SwitchPreference, ThemeColorMutable, LongClic
|
|||||||
return context.obtainStyledAttributes(set, styleableRes, defStyleAttr, defStyleRes)
|
return context.obtainStyledAttributes(set, styleableRes, defStyleAttr, defStyleRes)
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("RestrictedApi")
|
|
||||||
private fun getAttrString(a: TypedArray, index: Int): String? = a.getString(index)
|
private fun getAttrString(a: TypedArray, index: Int): String? = a.getString(index)
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
package org.autojs.autojs.theme.widget;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.graphics.PorterDuff;
|
|
||||||
import android.graphics.PorterDuffColorFilter;
|
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
import org.autojs.autojs.theme.ThemeColor;
|
|
||||||
import org.autojs.autojs.theme.ThemeColorManager;
|
|
||||||
import org.autojs.autojs.theme.ThemeColorMutable;
|
|
||||||
import org.autojs.autojs6.R;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Stardust on Mar 5, 2017.
|
|
||||||
* Modified by SuperMonster003 as of Dec 1, 2021.
|
|
||||||
*/
|
|
||||||
public class ThemeColorToolbar extends Toolbar implements ThemeColorMutable {
|
|
||||||
|
|
||||||
public ThemeColorToolbar(Context context) {
|
|
||||||
super(context);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ThemeColorToolbar(Context context, @Nullable AttributeSet attrs) {
|
|
||||||
super(context, attrs);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ThemeColorToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
|
|
||||||
super(context, attrs, defStyleAttr);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void init() {
|
|
||||||
ThemeColorManager.add(this);
|
|
||||||
setContentInsetStartWithNavigation(getContext().getResources().getDimensionPixelSize(R.dimen.toolbar_content_inset_start_with_navigation));
|
|
||||||
setTitleTextAppearance(getContext(), R.style.TextAppearanceMainTitle);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setThemeColor(ThemeColor color) {
|
|
||||||
getViewTreeObserver().addOnGlobalLayoutListener(() -> applyThemeColor(color));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void applyThemeColor(ThemeColor color) {
|
|
||||||
int colorPrimary = color.colorPrimary;
|
|
||||||
setBackgroundColor(colorPrimary);
|
|
||||||
|
|
||||||
int aimColor = ThemeColorManager.getDayOrNightColorByLuminance(getContext());
|
|
||||||
int popupTheme = ThemeColorManager.isThemeColorLuminanceLight() ? R.style.PopupMenuThemeLight : R.style.PopupMenuThemeDark;
|
|
||||||
|
|
||||||
setTitleTextColor(aimColor);
|
|
||||||
setSubtitleTextColor(aimColor);
|
|
||||||
|
|
||||||
Drawable navigationIcon = getNavigationIcon();
|
|
||||||
if (navigationIcon != null) {
|
|
||||||
navigationIcon.setColorFilter(new PorterDuffColorFilter(aimColor, PorterDuff.Mode.SRC_IN));
|
|
||||||
setNavigationIcon(navigationIcon);
|
|
||||||
}
|
|
||||||
Drawable collapseIcon = getCollapseIcon();
|
|
||||||
if (collapseIcon != null) {
|
|
||||||
collapseIcon.setColorFilter(new PorterDuffColorFilter(aimColor, PorterDuff.Mode.SRC_IN));
|
|
||||||
setCollapseIcon(collapseIcon);
|
|
||||||
}
|
|
||||||
Drawable overflowIcon = getOverflowIcon();
|
|
||||||
if (overflowIcon != null) {
|
|
||||||
overflowIcon.setColorFilter(new PorterDuffColorFilter(aimColor, PorterDuff.Mode.SRC_IN));
|
|
||||||
setOverflowIcon(overflowIcon);
|
|
||||||
}
|
|
||||||
|
|
||||||
setPopupTheme(popupTheme);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package org.autojs.autojs.theme.widget
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.view.ViewTreeObserver.OnGlobalLayoutListener
|
||||||
|
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.applyColorFilterWith
|
||||||
|
import org.autojs.autojs6.R
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Stardust on Mar 5, 2017.
|
||||||
|
* Modified by SuperMonster003 as of Dec 1, 2021.
|
||||||
|
*/
|
||||||
|
open class ThemeColorToolbar : Toolbar, ThemeColorMutable {
|
||||||
|
|
||||||
|
constructor(context: Context) : super(context) {
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun init() {
|
||||||
|
add(this)
|
||||||
|
setContentInsetStartWithNavigation(context.resources.getDimensionPixelSize(R.dimen.toolbar_content_inset_start_with_navigation))
|
||||||
|
setTitleTextAppearance(context, R.style.TextAppearanceMainTitle)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setThemeColor(color: ThemeColor) {
|
||||||
|
viewTreeObserver.addOnGlobalLayoutListener(OnGlobalLayoutListener { applyThemeColor(color) })
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun applyThemeColor(color: ThemeColor) {
|
||||||
|
val aimColor = getDayOrNightColorByLuminance(context)
|
||||||
|
|
||||||
|
setBackgroundColor(color.colorPrimary)
|
||||||
|
setTitleTextColor(aimColor)
|
||||||
|
setSubtitleTextColor(aimColor)
|
||||||
|
|
||||||
|
navigationIcon?.let { navigationIcon = it.applyColorFilterWith(aimColor) }
|
||||||
|
collapseIcon?.let { collapseIcon = it.applyColorFilterWith(aimColor) }
|
||||||
|
overflowIcon?.let { overflowIcon = it.applyColorFilterWith(aimColor) }
|
||||||
|
|
||||||
|
popupTheme = if (isThemeColorLuminanceLight()) R.style.PopupMenuThemeLight else R.style.PopupMenuThemeDark
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,6 +23,7 @@ import org.autojs.autojs.ui.BaseActivity
|
|||||||
import org.autojs.autojs.ui.keystore.NewKeyStoreDialog.NewKeyStoreConfigs
|
import org.autojs.autojs.ui.keystore.NewKeyStoreDialog.NewKeyStoreConfigs
|
||||||
import org.autojs.autojs.ui.viewmodel.KeyStoreViewModel
|
import org.autojs.autojs.ui.viewmodel.KeyStoreViewModel
|
||||||
import org.autojs.autojs.util.ViewUtils
|
import org.autojs.autojs.util.ViewUtils
|
||||||
|
import org.autojs.autojs.util.ViewUtils.setMenuIconsColorByThemeColorLuminance
|
||||||
import org.autojs.autojs6.R
|
import org.autojs.autojs6.R
|
||||||
import org.autojs.autojs6.databinding.ActivityManageKeyStoreBinding
|
import org.autojs.autojs6.databinding.ActivityManageKeyStoreBinding
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -118,7 +119,7 @@ class ManageKeyStoreActivity : BaseActivity() {
|
|||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
menuInflater.inflate(R.menu.menu_manage_key_store, menu)
|
menuInflater.inflate(R.menu.menu_manage_key_store, menu)
|
||||||
ViewUtils.setToolbarMenuIconsColorByThemeColorLuminance(this)
|
binding.toolbar.setMenuIconsColorByThemeColorLuminance(this)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import org.autojs.autojs.pluginclient.JsonSocketServer
|
|||||||
import org.autojs.autojs.service.AccessibilityService
|
import org.autojs.autojs.service.AccessibilityService
|
||||||
import org.autojs.autojs.service.ForegroundService
|
import org.autojs.autojs.service.ForegroundService
|
||||||
import org.autojs.autojs.service.NotificationService
|
import org.autojs.autojs.service.NotificationService
|
||||||
import org.autojs.autojs.theme.app.ColorSelectActivity
|
import org.autojs.autojs.theme.app.ColorSelectBaseActivity
|
||||||
import org.autojs.autojs.ui.floating.CircularMenu
|
import org.autojs.autojs.ui.floating.CircularMenu
|
||||||
import org.autojs.autojs.ui.floating.FloatyWindowManger
|
import org.autojs.autojs.ui.floating.FloatyWindowManger
|
||||||
import org.autojs.autojs.ui.fragment.BindingDelegates.viewBinding
|
import org.autojs.autojs.ui.fragment.BindingDelegates.viewBinding
|
||||||
@@ -366,7 +366,7 @@ open class DrawerFragment : Fragment() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
mThemeColorItem = DrawerMenuShortcutItem(R.drawable.ic_personalize, R.string.text_theme_color)
|
mThemeColorItem = DrawerMenuShortcutItem(R.drawable.ic_personalize, R.string.text_theme_color)
|
||||||
.setAction(Runnable { ColorSelectActivity.startActivity(mContext) })
|
.setAction(Runnable { ColorSelectBaseActivity.startActivity(mContext) })
|
||||||
|
|
||||||
mAboutAppAndDevItem = DrawerMenuShortcutItem(R.drawable.ic_about, R.string.text_about_app_and_developer)
|
mAboutAppAndDevItem = DrawerMenuShortcutItem(R.drawable.ic_about, R.string.text_about_app_and_developer)
|
||||||
.setAction(Runnable { AboutActivity.startActivity(mContext) })
|
.setAction(Runnable { AboutActivity.startActivity(mContext) })
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class NightModePreference : MaterialListPreference {
|
|||||||
prefContext.getString(R.string.entry_night_mode_follow_system) -> {
|
prefContext.getString(R.string.entry_night_mode_follow_system) -> {
|
||||||
ViewUtils.setDefaultNightMode(ViewUtils.MODE.FOLLOW)
|
ViewUtils.setDefaultNightMode(ViewUtils.MODE.FOLLOW)
|
||||||
Pref.putBoolean(R.string.key_auto_night_mode_enabled, true)
|
Pref.putBoolean(R.string.key_auto_night_mode_enabled, true)
|
||||||
Pref.putBoolean(R.string.key_night_mode_enabled, ViewUtils.isNightModeYes(prefContext))
|
Pref.putBoolean(R.string.key_night_mode_enabled, ViewUtils.isSystemDarkModeEnabled(prefContext))
|
||||||
}
|
}
|
||||||
prefContext.getString(R.string.entry_night_mode_always_on) -> {
|
prefContext.getString(R.string.entry_night_mode_always_on) -> {
|
||||||
ViewUtils.setDefaultNightMode(ViewUtils.MODE.NIGHT)
|
ViewUtils.setDefaultNightMode(ViewUtils.MODE.NIGHT)
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ package org.autojs.autojs.ui.settings
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import androidx.preference.Preference.SummaryProvider
|
|
||||||
import org.autojs.autojs.core.pref.Pref
|
import org.autojs.autojs.core.pref.Pref
|
||||||
import org.autojs.autojs.theme.app.ColorSelectActivity
|
import org.autojs.autojs.theme.app.ColorSelectBaseActivity
|
||||||
import org.autojs.autojs.theme.preference.MaterialPreference
|
import org.autojs.autojs.theme.preference.MaterialPreference
|
||||||
|
|
||||||
class ThemeColorPreference : MaterialPreference, SharedPreferences.OnSharedPreferenceChangeListener {
|
class ThemeColorPreference : MaterialPreference, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
@@ -20,12 +19,12 @@ class ThemeColorPreference : MaterialPreference, SharedPreferences.OnSharedPrefe
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
Pref.registerOnSharedPreferenceChangeListener(this)
|
Pref.registerOnSharedPreferenceChangeListener(this)
|
||||||
summaryProvider = SummaryProvider<ThemeColorPreference> { ColorSelectActivity.getColorString(prefContext) }
|
summaryProvider = SummaryProvider<ThemeColorPreference> { ColorSelectBaseActivity.getColorString(prefContext) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onClick() {
|
override fun onClick() {
|
||||||
super.onClick()
|
super.onClick()
|
||||||
ColorSelectActivity.startActivity(prefContext)
|
ColorSelectBaseActivity.startActivity(prefContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) = notifyChanged()
|
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) = notifyChanged()
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import org.autojs.autojs6.databinding.ToolbarMenuItemBinding
|
|||||||
*/
|
*/
|
||||||
class ToolbarMenuItem : LinearLayout {
|
class ToolbarMenuItem : LinearLayout {
|
||||||
|
|
||||||
private lateinit var mImageView: ImageView
|
private var mImageView: ImageView
|
||||||
private var mTextView: TextView
|
private var mTextView: TextView
|
||||||
|
|
||||||
private val enabledDrawable by lazy {
|
private val enabledDrawable by lazy {
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ object DisplayUtils {
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun dpToPx(dp: Float) = TypedValue.applyDimension(COMPLEX_UNIT_DIP, dp, displayMetrics)
|
fun dpToPx(dp: Float) = TypedValue.applyDimension(COMPLEX_UNIT_DIP, dp, displayMetrics)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun spToPx(sp: Float) = TypedValue.applyDimension(COMPLEX_UNIT_SP, sp, displayMetrics)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method converts device-specific pixels to density independent pixels.
|
* This method converts device-specific pixels to density independent pixels.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -10,9 +10,11 @@ import android.content.ContextWrapper
|
|||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_MASK
|
import android.content.res.Configuration.UI_MODE_NIGHT_MASK
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||||
|
import android.graphics.ColorFilter
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.graphics.PorterDuffColorFilter
|
import android.graphics.PorterDuffColorFilter
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
@@ -187,6 +189,11 @@ object ViewUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setStatusBarAppearanceLightByColorLuminance(activity: Activity, aimColor: Int) {
|
||||||
|
val shouldBeLight = ColorUtils.isLuminanceDark(aimColor)
|
||||||
|
setStatusBarAppearanceLight(activity, shouldBeLight)
|
||||||
|
}
|
||||||
|
|
||||||
fun setStatusBarBackgroundColor(activity: Activity, color: Int) {
|
fun setStatusBarBackgroundColor(activity: Activity, color: Int) {
|
||||||
val window = activity.window
|
val window = activity.window
|
||||||
val decorView = window.decorView
|
val decorView = window.decorView
|
||||||
@@ -347,15 +354,16 @@ object ViewUtils {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun setToolbarAsBack(activity: AppCompatActivity, title: String?) {
|
fun setToolbarAsBack(activity: AppCompatActivity, title: String?) {
|
||||||
val toolbar = activity.findViewById<Toolbar>(R.id.toolbar)
|
val toolbar = activity.findViewById<Toolbar>(R.id.toolbar)?.apply {
|
||||||
toolbar.title = title
|
this.title = title
|
||||||
|
} ?: return
|
||||||
activity.setSupportActionBar(toolbar)
|
activity.setSupportActionBar(toolbar)
|
||||||
activity.supportActionBar?.let { actionBar ->
|
activity.supportActionBar?.let { actionBar ->
|
||||||
toolbar.setNavigationOnClickListener { activity.finish() }
|
toolbar.setNavigationOnClickListener { activity.finish() }
|
||||||
actionBar.setDisplayHomeAsUpEnabled(true)
|
actionBar.setDisplayHomeAsUpEnabled(true)
|
||||||
}
|
}
|
||||||
setToolbarMenuIconsColorByThemeColorLuminance(activity, toolbar)
|
toolbar.setMenuIconsColorByThemeColorLuminance(activity)
|
||||||
setToolbarNavigationIconColorByThemeColorLuminance(activity, toolbar)
|
toolbar.setNavigationIconColorByThemeColorLuminance(activity)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@@ -363,24 +371,73 @@ object ViewUtils {
|
|||||||
setToolbarAsBack(activity, activity.getString(titleRes))
|
setToolbarAsBack(activity, activity.getString(titleRes))
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
fun Toolbar.setMenuIconsColorByThemeColorLuminance(context: Context) {
|
||||||
@JvmOverloads
|
this.setMenuIconsColorByColorLuminance(context, ThemeColorManager.colorPrimary)
|
||||||
fun setToolbarMenuIconsColorByThemeColorLuminance(activity: Activity, toolbar: Toolbar? = null) {
|
|
||||||
val toolbarView = toolbar ?: activity.findViewById(R.id.toolbar) ?: return
|
|
||||||
val aimColor = ThemeColorManager.getDayOrNightColorByLuminance(activity)
|
|
||||||
toolbarView.menu.forEach { menuItem ->
|
|
||||||
menuItem.icon?.colorFilter = PorterDuffColorFilter(aimColor, PorterDuff.Mode.SRC_IN)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
fun setToolbarMenuIconsColorByThemeColorLuminance(context: Context, toolbar: Toolbar) {
|
||||||
fun setToolbarNavigationIconColorByThemeColorLuminance(activity: Activity, toolbar: Toolbar? = null) {
|
toolbar.setMenuIconsColorByThemeColorLuminance(context)
|
||||||
val toolbarView = toolbar ?: activity.findViewById(R.id.toolbar) ?: return
|
}
|
||||||
val aimColor = ThemeColorManager.getDayOrNightColorByLuminance(activity)
|
|
||||||
toolbarView.navigationIcon?.let { navigationIcon ->
|
fun Toolbar.setMenuIconsColorByColorLuminance(context: Context, aimColor: Int) {
|
||||||
navigationIcon.colorFilter = PorterDuffColorFilter(aimColor, PorterDuff.Mode.SRC_IN)
|
val color = getDayOrNightColorByLuminance(context, aimColor)
|
||||||
|
this.menu.forEach { menu ->
|
||||||
|
menu.icon?.let { ic -> menu.icon = ic.applyColorFilterWith(color) }
|
||||||
}
|
}
|
||||||
|
this.collapseIcon?.let { this.collapseIcon = it.applyColorFilterWith(color) }
|
||||||
|
this.overflowIcon?.let { this.overflowIcon = it.applyColorFilterWith(color) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun setToolbarMenuIconsColorByColorLuminance(context: Context, toolbar: Toolbar, aimColor: Int) {
|
||||||
|
toolbar.setMenuIconsColorByColorLuminance(context, aimColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Toolbar.setNavigationIconColorByThemeColorLuminance(context: Context) {
|
||||||
|
this.setNavigationIconColorByColorLuminance(context, ThemeColorManager.colorPrimary)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun setToolbarNavigationIconColorByThemeColorLuminance(context: Context, toolbar: Toolbar) {
|
||||||
|
toolbar.setNavigationIconColorByThemeColorLuminance(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Toolbar.setNavigationIconColorByColorLuminance(context: Context, aimColor: Int) {
|
||||||
|
val color = getDayOrNightColorByLuminance(context, aimColor)
|
||||||
|
this.navigationIcon?.let { this.navigationIcon = it.applyColorFilterWith(color) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Drawable.applyColorFilterWith(color: Int): Drawable {
|
||||||
|
return this.applyColorFilterWith(PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Drawable.applyColorFilterWith(colorFilter: ColorFilter): Drawable {
|
||||||
|
return this.also { this.colorFilter = colorFilter }
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun setToolbarNavigationIconColorByColorLuminance(context: Context, toolbar: Toolbar, aimColor: Int) {
|
||||||
|
toolbar.setNavigationIconColorByColorLuminance(context, aimColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Toolbar.setTitlesTextColorByColorLuminance(context: Context, aimColor: Int) {
|
||||||
|
val color = getDayOrNightColorByLuminance(context, aimColor)
|
||||||
|
setTitleTextColor(color)
|
||||||
|
setSubtitleTextColor(color)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun setToolbarTitlesTextColorByColorLuminance(context: Context, toolbar: Toolbar, aimColor: Int) {
|
||||||
|
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
|
@JvmStatic
|
||||||
|
|||||||
15
app/src/main/res/drawable/ic_locate.xml
Normal file
15
app/src/main/res/drawable/ic_locate.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<vector
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="20dp"
|
||||||
|
android:height="20dp"
|
||||||
|
android:viewportWidth="20"
|
||||||
|
android:viewportHeight="20">
|
||||||
|
|
||||||
|
<path
|
||||||
|
android:fillColor="@android:color/transparent"
|
||||||
|
android:strokeColor="#09090b"
|
||||||
|
android:strokeWidth="1.8"
|
||||||
|
android:strokeLineCap="round"
|
||||||
|
android:strokeLineJoin="round"
|
||||||
|
android:pathData="M16,10c0,3.3137 -2.6863,6 -6,6m6,-6c0,-3.31371 -2.6863,-6 -6,-6m6,6h3m-9,6c-3.31371,0 -6,-2.6863 -6,-6m6,6v3m-6,-9c0,-3.31371 2.68629,-6 6,-6m-6,6h-3m9,-6v-3m2,9c0,1.1046 -0.8954,2 -2,2s-2,-0.8954 -2,-2 0.8954,-2 2,-2 2,0.8954 2,2z" />
|
||||||
|
</vector>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -16,16 +17,14 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:theme="@style/MtAppTheme.AppBarOverlay"
|
android:theme="@style/MtAppTheme.AppBarOverlay"
|
||||||
android:clipToPadding="true"
|
|
||||||
android:fitsSystemWindows="true">
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="?attr/actionBarSize"
|
||||||
android:layout_gravity="center_vertical"
|
|
||||||
android:theme="@style/ToolBarStyle"
|
|
||||||
app:contentInsetStartWithNavigation="@dimen/toolbar_content_inset_start_with_navigation"
|
app:contentInsetStartWithNavigation="@dimen/toolbar_content_inset_start_with_navigation"
|
||||||
|
android:theme="@style/ToolBarStyle"
|
||||||
app:popupTheme="@style/MtAppTheme.PopupOverlay"
|
app:popupTheme="@style/MtAppTheme.PopupOverlay"
|
||||||
tools:title="@string/text_sample_string" />
|
tools:title="@string/text_sample_string" />
|
||||||
|
|
||||||
|
|||||||
41
app/src/main/res/layout/mt_activity_color_select_legacy.xml
Normal file
41
app/src/main/res/layout/mt_activity_color_select_legacy.xml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<io.codetail.widget.RevealFrameLayout
|
||||||
|
android:id="@+id/appBarContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:id="@+id/appBar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:theme="@style/MtAppTheme.AppBarOverlay"
|
||||||
|
android:fitsSystemWindows="true">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
app:contentInsetStartWithNavigation="@dimen/toolbar_content_inset_start_with_navigation"
|
||||||
|
android:theme="@style/ToolBarStyle"
|
||||||
|
app:popupTheme="@style/MtAppTheme.PopupOverlay"
|
||||||
|
tools:title="@string/text_sample_string" />
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
</io.codetail.widget.RevealFrameLayout>
|
||||||
|
|
||||||
|
<view
|
||||||
|
android:id="@+id/color_setting_recycler_view"
|
||||||
|
class="org.autojs.autojs.theme.app.ColorSettingRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
24
app/src/main/res/menu/menu_color_select.xml
Normal file
24
app/src/main/res/menu/menu_color_select.xml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_locate_current_color"
|
||||||
|
android:title="@string/text_locate_current_color"
|
||||||
|
android:icon="@drawable/ic_locate"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_search_color"
|
||||||
|
android:title="@string/text_search_color"
|
||||||
|
android:icon="@drawable/ic_search_white_36dp"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_toggle_color_select_layout"
|
||||||
|
android:title="@string/text_switch_to_legacy_layout"
|
||||||
|
android:icon="@drawable/ic_swap_horiz_black_48dp"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
</menu>
|
||||||
12
app/src/main/res/menu/menu_color_select_legacy.xml
Normal file
12
app/src/main/res/menu/menu_color_select_legacy.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_toggle_color_select_layout"
|
||||||
|
android:title="@string/text_switch_to_new_layout"
|
||||||
|
android:icon="@drawable/ic_swap_horiz_black_48dp"
|
||||||
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
</menu>
|
||||||
@@ -97,11 +97,14 @@
|
|||||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar" />
|
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
|
||||||
|
<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
|
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
|
||||||
<item name="android:textColorPrimary">@color/day_full</item>
|
<item name="android:textColorPrimary">@color/day_full</item>
|
||||||
<item name="android:textColorSecondary">@color/colorAccent</item>
|
<item name="android:textColorSecondary">@color/colorAccent</item>
|
||||||
|
<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MtAppTheme.FullScreen" parent="Theme.AppCompat.DayNight.NoActionBar">
|
<style name="MtAppTheme.FullScreen" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||||
@@ -112,9 +115,11 @@
|
|||||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="MtAppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar" />
|
<style name="MtAppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
|
||||||
|
<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="MtAppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar">
|
<style name="MtAppTheme.PopupOverlay" parent="OverflowMenu">
|
||||||
<item name="android:textColorPrimary">@color/day_full</item>
|
<item name="android:textColorPrimary">@color/day_full</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -144,18 +149,18 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="PopupMenuTheme" parent="AppTheme.PopupOverlay">
|
<style name="PopupMenuTheme" parent="AppTheme.PopupOverlay">
|
||||||
<item name="android:textColor">@color/day_night</item>
|
<item name="android:textColor">@color/day_night_full</item>
|
||||||
<item name="android:tint">@color/day_night</item>
|
<item name="android:tint">@color/day_night_full</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="PopupMenuThemeLight" parent="AppTheme.PopupOverlay">
|
<style name="PopupMenuThemeLight" parent="AppTheme.PopupOverlay">
|
||||||
<item name="android:textColor">@color/day</item>
|
<item name="android:textColor">@color/day_full</item>
|
||||||
<item name="android:tint">@color/day</item>
|
<item name="android:tint">@color/day_full</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="PopupMenuThemeDark" parent="AppTheme.PopupOverlay">
|
<style name="PopupMenuThemeDark" parent="AppTheme.PopupOverlay">
|
||||||
<item name="android:textColor">@color/dusk</item>
|
<item name="android:textColor">@color/night_full</item>
|
||||||
<item name="android:tint">@color/dusk</item>
|
<item name="android:tint">@color/night_full</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="SearchViewActionBar" parent="@style/Widget.AppCompat.SearchView.ActionBar" />
|
<style name="SearchViewActionBar" parent="@style/Widget.AppCompat.SearchView.ActionBar" />
|
||||||
@@ -164,8 +169,8 @@
|
|||||||
|
|
||||||
<style name="TextAppearanceEditorTitle" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
|
<style name="TextAppearanceEditorTitle" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
|
||||||
<item name="android:textSize">@dimen/editor_title_text_size</item>
|
<item name="android:textSize">@dimen/editor_title_text_size</item>
|
||||||
<item name="android:maxLines">2</item>
|
<item name="maxLines">2</item>
|
||||||
<item name="android:ellipsize">middle</item>
|
<item name="paddingStart">0dp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearanceMainTitle" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
|
<style name="TextAppearanceMainTitle" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
|
||||||
@@ -179,6 +184,8 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
|
<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
|
||||||
|
<item name="android:textColor">@color/day_night_full</item>
|
||||||
|
<item name="android:itemBackground">@color/item_background</item>
|
||||||
<item name="android:windowDisablePreview">true</item>
|
<item name="android:windowDisablePreview">true</item>
|
||||||
<item name="overlapAnchor">false</item>
|
<item name="overlapAnchor">false</item>
|
||||||
<item name="android:dropDownVerticalOffset">5.0dp</item>
|
<item name="android:dropDownVerticalOffset">5.0dp</item>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#Mon Mar 24 19:37:17 CST 2025
|
#Mon Mar 24 19:54:51 CST 2025
|
||||||
BUILD_TIME=1742816237794
|
BUILD_TIME=1742817291092
|
||||||
COMPILE_SDK_VERSION=35
|
COMPILE_SDK_VERSION=35
|
||||||
JAVA_VERSION=23
|
JAVA_VERSION=23
|
||||||
JAVA_VERSION_MIN_RADICAL=0
|
JAVA_VERSION_MIN_RADICAL=0
|
||||||
|
|||||||
Reference in New Issue
Block a user