This commit is contained in:
gedoor 2021-10-19 21:42:33 +08:00
parent 4da829864f
commit c2bc2ae34d
5 changed files with 27 additions and 39 deletions

View File

@ -6,6 +6,7 @@ import android.graphics.drawable.TransitionDrawable
import android.view.View
import android.view.ViewTreeObserver
import androidx.annotation.ColorInt
import io.legado.app.utils.DrawableUtils
/**
* @author Karim Abou Zeid (kabouzeid)

View File

@ -16,7 +16,6 @@ import io.legado.app.base.VMBaseActivity
import io.legado.app.databinding.ActivityRssReadBinding
import io.legado.app.help.AppConfig
import io.legado.app.lib.dialogs.SelectItem
import io.legado.app.lib.theme.DrawableUtils
import io.legado.app.lib.theme.primaryTextColor
import io.legado.app.model.Download
import io.legado.app.ui.association.OnLineImportActivity
@ -218,7 +217,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
starMenuItem?.setIcon(R.drawable.ic_star_border)
starMenuItem?.setTitle(R.string.out_favorites)
}
DrawableUtils.setTint(starMenuItem?.icon, primaryTextColor)
starMenuItem?.icon?.setTint(primaryTextColor)
}
override fun upTtsMenu(isPlaying: Boolean) {
@ -230,7 +229,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
ttsMenuItem?.setIcon(R.drawable.ic_volume_up)
ttsMenuItem?.setTitle(R.string.read_aloud)
}
DrawableUtils.setTint(ttsMenuItem?.icon, primaryTextColor)
ttsMenuItem?.icon?.setTint(primaryTextColor)
}
}

View File

@ -1,4 +1,4 @@
package io.legado.app.lib.theme
package io.legado.app.utils
import android.content.res.ColorStateList
import android.graphics.PorterDuff
@ -30,30 +30,24 @@ object DrawableUtils {
return TransitionDrawable(drawables)
}
fun setTintList(
drawable: Drawable?,
tint: ColorStateList,
tintMode: PorterDuff.Mode = PorterDuff.Mode.SRC_ATOP
) {
drawable?.let {
val wrappedDrawable = DrawableCompat.wrap(it)
wrappedDrawable.mutate()
DrawableCompat.setTintMode(wrappedDrawable, tintMode)
DrawableCompat.setTintList(wrappedDrawable, tint)
}
}
fun setTint(
drawable: Drawable?,
@ColorInt tint: Int,
tintMode: PorterDuff.Mode = PorterDuff.Mode.SRC_ATOP
) {
drawable?.let {
val wrappedDrawable = DrawableCompat.wrap(it)
wrappedDrawable.mutate()
DrawableCompat.setTintMode(wrappedDrawable, tintMode)
DrawableCompat.setTint(wrappedDrawable, tint)
}
}
}
fun Drawable.setTintList(
tint: ColorStateList,
tintMode: PorterDuff.Mode = PorterDuff.Mode.SRC_ATOP
) {
val wrappedDrawable = DrawableCompat.wrap(this)
wrappedDrawable.mutate()
DrawableCompat.setTintMode(wrappedDrawable, tintMode)
DrawableCompat.setTintList(wrappedDrawable, tint)
}
fun Drawable.setTint(
@ColorInt tint: Int,
tintMode: PorterDuff.Mode = PorterDuff.Mode.SRC_ATOP
) {
val wrappedDrawable = DrawableCompat.wrap(this)
wrappedDrawable.mutate()
DrawableCompat.setTintMode(wrappedDrawable, tintMode)
DrawableCompat.setTint(wrappedDrawable, tint)
}

View File

@ -9,7 +9,6 @@ import androidx.appcompat.view.menu.MenuItemImpl
import androidx.core.view.forEach
import io.legado.app.R
import io.legado.app.constant.Theme
import io.legado.app.lib.theme.DrawableUtils
import java.lang.reflect.Method
import java.util.*
@ -23,10 +22,8 @@ fun Menu.applyTint(context: Context, theme: Theme = Theme.Auto): Menu = this.let
menu.forEach { item ->
(item as MenuItemImpl).let { impl ->
//overflow展开的item
DrawableUtils.setTint(
impl.icon,
if (impl.requiresOverflow()) defaultTextColor
else tintColor
impl.icon.setTint(
if (impl.requiresOverflow()) defaultTextColor else tintColor
)
}
}
@ -47,10 +44,7 @@ fun Menu.applyOpenTint(context: Context) {
if (menuItems is ArrayList<*>) {
for (menuItem in menuItems) {
if (menuItem is MenuItem) {
DrawableUtils.setTint(
menuItem.icon,
defaultTextColor
)
menuItem.icon.setTint(defaultTextColor)
}
}
}