diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedFaviconDrawable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedFaviconDrawable.kt index 23efccce9..2d89252c7 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedFaviconDrawable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedFaviconDrawable.kt @@ -33,7 +33,7 @@ class AnimatedFaviconDrawable( init { timeAnimator.setTimeListener(this) - updateColor() + onStateChange(state) } override fun draw(canvas: Canvas) { @@ -44,11 +44,11 @@ class AnimatedFaviconDrawable( super.draw(canvas) } - override fun setAlpha(alpha: Int) = Unit - - override fun getAlpha(): Int = 255 - - override fun isOpaque(): Boolean = false + // override fun setAlpha(alpha: Int) = Unit + // + // override fun getAlpha(): Int = 255 + // + // override fun isOpaque(): Boolean = false override fun onTimeUpdate(animation: TimeAnimator?, totalTime: Long, deltaTime: Long) { callback?.also { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedPlaceholderDrawable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedPlaceholderDrawable.kt index ee6542775..1a22dd0a0 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedPlaceholderDrawable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/AnimatedPlaceholderDrawable.kt @@ -7,6 +7,7 @@ import android.graphics.ColorFilter import android.graphics.PixelFormat import android.graphics.drawable.Animatable import android.graphics.drawable.Drawable +import androidx.core.graphics.ColorUtils import androidx.interpolator.view.animation.FastOutSlowInInterpolator import com.google.android.material.animation.ArgbEvaluatorCompat import org.koitharu.kotatsu.R @@ -23,6 +24,7 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti private val interpolator = FastOutSlowInInterpolator() private val period = context.getAnimationDuration(R.integer.config_longAnimTime) * 2 private val timeAnimator = TimeAnimator() + private var currentAlpha: Int = 255 init { timeAnimator.setTimeListener(this) @@ -38,14 +40,15 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti } override fun setAlpha(alpha: Int) { - // this.alpha = alpha FIXME coil's crossfade + currentAlpha = alpha + updateColor() } @Suppress("DeprecatedCallableAddReplaceWith") @Deprecated("Deprecated in Java") override fun getOpacity(): Int = PixelFormat.TRANSLUCENT - override fun getAlpha(): Int = 255 + override fun getAlpha(): Int = currentAlpha override fun setColorFilter(colorFilter: ColorFilter?) = Unit @@ -72,7 +75,10 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti } val ph = period / 2 val fraction = abs((System.currentTimeMillis() % period) - ph) / ph.toFloat() - currentColor = ArgbEvaluatorCompat.getInstance() - .evaluate(interpolator.getInterpolation(fraction), colorLow, colorHigh) + currentColor = ColorUtils.setAlphaComponent( + ArgbEvaluatorCompat.getInstance() + .evaluate(interpolator.getInterpolation(fraction), colorLow, colorHigh), + currentAlpha + ) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt index 468163bdd..3d1df1228 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/FaviconDrawable.kt @@ -59,6 +59,7 @@ open class FaviconDrawable( paint.isFakeBoldText = true colorForeground = KotatsuColors.random(name) currentForegroundColor = MaterialColors.harmonize(colorForeground, colorBackground.defaultColor) + onStateChange(state) } override fun draw(canvas: Canvas) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/TextDrawable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/TextDrawable.kt index f2d2cd78a..a31c80f3d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/TextDrawable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/image/TextDrawable.kt @@ -34,6 +34,7 @@ class TextDrawable( } init { + onStateChange(state) measureTextBounds() } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/DotsIndicator.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/DotsIndicator.kt index d05145bb6..cf5e55b62 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/DotsIndicator.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/DotsIndicator.kt @@ -57,7 +57,7 @@ class DotsIndicator @JvmOverloads constructor( dotsColor = getColorStateList(R.styleable.DotsIndicator_dotColor) ?: context.getThemeColorStateList(materialR.attr.colorOnBackground) ?: dotsColor - paint.color = dotsColor.defaultColor + paint.color = dotsColor.getColorForState(drawableState, dotsColor.defaultColor) indicatorSize = getDimension(R.styleable.DotsIndicator_dotSize, indicatorSize) dotSpacing = getDimension(R.styleable.DotsIndicator_dotSpacing, dotSpacing) smallDotScale = getFloat(R.styleable.DotsIndicator_dotScale, smallDotScale).coerceIn(0f, 1f) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/util/ReadingProgressDrawable.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/util/ReadingProgressDrawable.kt index 526a52c23..7cf75d2bd 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/util/ReadingProgressDrawable.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/util/ReadingProgressDrawable.kt @@ -76,6 +76,7 @@ class ReadingProgressDrawable( paint.strokeWidth = ta.getDimension(R.styleable.ProgressDrawable_strokeWidth, 1f) ta.recycle() checkDrawable?.setTintList(textColor) + onStateChange(state) } override fun onBoundsChange(bounds: Rect) {