Fix drawables state

master
Koitharu 1 year ago
parent dc2e603356
commit 8dea483f64
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -33,7 +33,7 @@ class AnimatedFaviconDrawable(
init { init {
timeAnimator.setTimeListener(this) timeAnimator.setTimeListener(this)
updateColor() onStateChange(state)
} }
override fun draw(canvas: Canvas) { override fun draw(canvas: Canvas) {
@ -44,11 +44,11 @@ class AnimatedFaviconDrawable(
super.draw(canvas) super.draw(canvas)
} }
override fun setAlpha(alpha: Int) = Unit // override fun setAlpha(alpha: Int) = Unit
//
override fun getAlpha(): Int = 255 // override fun getAlpha(): Int = 255
//
override fun isOpaque(): Boolean = false // override fun isOpaque(): Boolean = false
override fun onTimeUpdate(animation: TimeAnimator?, totalTime: Long, deltaTime: Long) { override fun onTimeUpdate(animation: TimeAnimator?, totalTime: Long, deltaTime: Long) {
callback?.also { callback?.also {

@ -7,6 +7,7 @@ import android.graphics.ColorFilter
import android.graphics.PixelFormat import android.graphics.PixelFormat
import android.graphics.drawable.Animatable import android.graphics.drawable.Animatable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import androidx.core.graphics.ColorUtils
import androidx.interpolator.view.animation.FastOutSlowInInterpolator import androidx.interpolator.view.animation.FastOutSlowInInterpolator
import com.google.android.material.animation.ArgbEvaluatorCompat import com.google.android.material.animation.ArgbEvaluatorCompat
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
@ -23,6 +24,7 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti
private val interpolator = FastOutSlowInInterpolator() private val interpolator = FastOutSlowInInterpolator()
private val period = context.getAnimationDuration(R.integer.config_longAnimTime) * 2 private val period = context.getAnimationDuration(R.integer.config_longAnimTime) * 2
private val timeAnimator = TimeAnimator() private val timeAnimator = TimeAnimator()
private var currentAlpha: Int = 255
init { init {
timeAnimator.setTimeListener(this) timeAnimator.setTimeListener(this)
@ -38,14 +40,15 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti
} }
override fun setAlpha(alpha: Int) { override fun setAlpha(alpha: Int) {
// this.alpha = alpha FIXME coil's crossfade currentAlpha = alpha
updateColor()
} }
@Suppress("DeprecatedCallableAddReplaceWith") @Suppress("DeprecatedCallableAddReplaceWith")
@Deprecated("Deprecated in Java") @Deprecated("Deprecated in Java")
override fun getOpacity(): Int = PixelFormat.TRANSLUCENT override fun getOpacity(): Int = PixelFormat.TRANSLUCENT
override fun getAlpha(): Int = 255 override fun getAlpha(): Int = currentAlpha
override fun setColorFilter(colorFilter: ColorFilter?) = Unit override fun setColorFilter(colorFilter: ColorFilter?) = Unit
@ -72,7 +75,10 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti
} }
val ph = period / 2 val ph = period / 2
val fraction = abs((System.currentTimeMillis() % period) - ph) / ph.toFloat() val fraction = abs((System.currentTimeMillis() % period) - ph) / ph.toFloat()
currentColor = ArgbEvaluatorCompat.getInstance() currentColor = ColorUtils.setAlphaComponent(
.evaluate(interpolator.getInterpolation(fraction), colorLow, colorHigh) ArgbEvaluatorCompat.getInstance()
.evaluate(interpolator.getInterpolation(fraction), colorLow, colorHigh),
currentAlpha
)
} }
} }

@ -59,6 +59,7 @@ open class FaviconDrawable(
paint.isFakeBoldText = true paint.isFakeBoldText = true
colorForeground = KotatsuColors.random(name) colorForeground = KotatsuColors.random(name)
currentForegroundColor = MaterialColors.harmonize(colorForeground, colorBackground.defaultColor) currentForegroundColor = MaterialColors.harmonize(colorForeground, colorBackground.defaultColor)
onStateChange(state)
} }
override fun draw(canvas: Canvas) { override fun draw(canvas: Canvas) {

@ -34,6 +34,7 @@ class TextDrawable(
} }
init { init {
onStateChange(state)
measureTextBounds() measureTextBounds()
} }

@ -57,7 +57,7 @@ class DotsIndicator @JvmOverloads constructor(
dotsColor = getColorStateList(R.styleable.DotsIndicator_dotColor) dotsColor = getColorStateList(R.styleable.DotsIndicator_dotColor)
?: context.getThemeColorStateList(materialR.attr.colorOnBackground) ?: context.getThemeColorStateList(materialR.attr.colorOnBackground)
?: dotsColor ?: dotsColor
paint.color = dotsColor.defaultColor paint.color = dotsColor.getColorForState(drawableState, dotsColor.defaultColor)
indicatorSize = getDimension(R.styleable.DotsIndicator_dotSize, indicatorSize) indicatorSize = getDimension(R.styleable.DotsIndicator_dotSize, indicatorSize)
dotSpacing = getDimension(R.styleable.DotsIndicator_dotSpacing, dotSpacing) dotSpacing = getDimension(R.styleable.DotsIndicator_dotSpacing, dotSpacing)
smallDotScale = getFloat(R.styleable.DotsIndicator_dotScale, smallDotScale).coerceIn(0f, 1f) smallDotScale = getFloat(R.styleable.DotsIndicator_dotScale, smallDotScale).coerceIn(0f, 1f)

@ -76,6 +76,7 @@ class ReadingProgressDrawable(
paint.strokeWidth = ta.getDimension(R.styleable.ProgressDrawable_strokeWidth, 1f) paint.strokeWidth = ta.getDimension(R.styleable.ProgressDrawable_strokeWidth, 1f)
ta.recycle() ta.recycle()
checkDrawable?.setTintList(textColor) checkDrawable?.setTintList(textColor)
onStateChange(state)
} }
override fun onBoundsChange(bounds: Rect) { override fun onBoundsChange(bounds: Rect) {

Loading…
Cancel
Save