diff --git a/app/build.gradle b/app/build.gradle index b1173bb81..77fb6af12 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdk = 21 targetSdk = 34 - versionCode = 638 - versionName = '7.0-rc1' + versionCode = 639 + versionName = '7.0-rc2' generatedDensities = [] testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner' ksp { 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 01d0d7c77..2fb7aa969 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,7 +7,6 @@ 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 @@ -21,7 +20,6 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti private val colorLow = context.getThemeColor(materialR.attr.colorSurfaceContainerLowest) private val colorHigh = context.getThemeColor(materialR.attr.colorSurfaceContainerHighest) private var currentColor: Int = colorLow - private var alpha: Int = 255 private val interpolator = FastOutSlowInInterpolator() private val period = context.getAnimationDuration(R.integer.config_longAnimTime) * 2 private val timeAnimator = TimeAnimator() @@ -32,7 +30,7 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti } override fun draw(canvas: Canvas) { - if (!isRunning) { + if (!isRunning && period > 0) { updateColor() start() } @@ -45,10 +43,11 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti override fun setColorFilter(colorFilter: ColorFilter?) = Unit + @Suppress("DeprecatedCallableAddReplaceWith") @Deprecated("Deprecated in Java") - override fun getOpacity(): Int = if (alpha == 255) PixelFormat.OPAQUE else PixelFormat.TRANSLUCENT + override fun getOpacity(): Int = PixelFormat.OPAQUE - override fun getAlpha(): Int = alpha + override fun getAlpha(): Int = 255 override fun onTimeUpdate(animation: TimeAnimator?, totalTime: Long, deltaTime: Long) { callback?.also { @@ -68,13 +67,12 @@ class AnimatedPlaceholderDrawable(context: Context) : Drawable(), Animatable, Ti override fun isRunning(): Boolean = timeAnimator.isStarted private fun updateColor() { + if (period <= 0f) { + return + } val ph = period / 2 val fraction = abs((System.currentTimeMillis() % period) - ph) / ph.toFloat() - var color = ArgbEvaluatorCompat.getInstance() + currentColor = ArgbEvaluatorCompat.getInstance() .evaluate(interpolator.getInterpolation(fraction), colorLow, colorHigh) - if (alpha != 255) { - color = ColorUtils.setAlphaComponent(color, alpha) - } - currentColor = color } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/ProgressButton.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/ProgressButton.kt index 24344d5ea..133b66071 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/ProgressButton.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/widgets/ProgressButton.kt @@ -22,6 +22,7 @@ import androidx.core.widget.TextViewCompat import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.util.ext.getAnimationDuration import org.koitharu.kotatsu.core.util.ext.getThemeColorStateList +import org.koitharu.kotatsu.core.util.ext.isAnimationsEnabled import org.koitharu.kotatsu.core.util.ext.resolveDp import org.koitharu.kotatsu.core.util.ext.setTextAndVisible import org.koitharu.kotatsu.core.util.ext.textAndVisible @@ -146,7 +147,7 @@ class ProgressButton @JvmOverloads constructor( fun setProgress(value: Float, animate: Boolean) { val prevAnimator = progressAnimator - if (animate) { + if (animate && context.isAnimationsEnabled) { if (value == targetProgress) { return }