Refactor animation duraton
This commit is contained in:
@@ -30,12 +30,11 @@ import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.shape.MaterialShapeDrawable
|
||||
import com.google.android.material.shape.ShapeAppearanceModel
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.databinding.FadingSnackbarLayoutBinding
|
||||
import org.koitharu.kotatsu.utils.ext.getThemeColorStateList
|
||||
import com.google.android.material.R as materialR
|
||||
|
||||
private const val ENTER_DURATION = 300L
|
||||
private const val EXIT_DURATION = 200L
|
||||
private const val SHORT_DURATION_MS = 1_500L
|
||||
private const val LONG_DURATION_MS = 2_750L
|
||||
|
||||
@@ -53,6 +52,8 @@ class FadingSnackbar @JvmOverloads constructor(
|
||||
) : FrameLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private val binding = FadingSnackbarLayoutBinding.inflate(LayoutInflater.from(context), this)
|
||||
private val enterDuration = context.resources.getInteger(R.integer.config_defaultAnimTime).toLong()
|
||||
private val exitDuration = context.resources.getInteger(android.R.integer.config_shortAnimTime).toLong()
|
||||
|
||||
init {
|
||||
binding.snackbarLayout.background = createThemedBackground()
|
||||
@@ -63,7 +64,7 @@ class FadingSnackbar @JvmOverloads constructor(
|
||||
animate()
|
||||
.alpha(0f)
|
||||
.withEndAction { visibility = GONE }
|
||||
.duration = EXIT_DURATION
|
||||
.duration = exitDuration
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,11 +91,11 @@ class FadingSnackbar @JvmOverloads constructor(
|
||||
visibility = VISIBLE
|
||||
animate()
|
||||
.alpha(1f)
|
||||
.duration = ENTER_DURATION
|
||||
.duration = enterDuration
|
||||
if (duration == Snackbar.LENGTH_INDEFINITE) {
|
||||
return
|
||||
}
|
||||
val durationMs = ENTER_DURATION + if (duration == Snackbar.LENGTH_LONG) LONG_DURATION_MS else SHORT_DURATION_MS
|
||||
val durationMs = enterDuration + if (duration == Snackbar.LENGTH_LONG) LONG_DURATION_MS else SHORT_DURATION_MS
|
||||
postDelayed(durationMs) {
|
||||
dismiss()
|
||||
onDismiss?.invoke()
|
||||
|
||||
@@ -49,7 +49,6 @@ import org.koitharu.kotatsu.utils.ext.*
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
private const val BUBBLE_ANIM_DURATION = 100L
|
||||
private const val SCROLLBAR_ANIM_DURATION = 300L
|
||||
private const val SCROLLBAR_HIDE_DELAY = 1000L
|
||||
private const val TRACK_SNAP_RANGE = 5
|
||||
|
||||
@@ -63,6 +62,9 @@ class FastScroller : LinearLayout {
|
||||
|
||||
private val Size.textSize get() = resources.getDimension(textSizeId)
|
||||
|
||||
private val animationDuration = (context.resources.getInteger(R.integer.config_defaultAnimTime) *
|
||||
context.animatorDurationScale).toLong()
|
||||
|
||||
private val bubbleView: TextView by lazy { findViewById(R.id.fastscroll_bubble) }
|
||||
private val handleView: ImageView by lazy { findViewById(R.id.fastscroll_handle) }
|
||||
private val trackView: ImageView by lazy { findViewById(R.id.fastscroll_track) }
|
||||
@@ -539,14 +541,14 @@ class FastScroller : LinearLayout {
|
||||
scrollbar.translationX = scrollbarPaddingEnd
|
||||
scrollbar.isVisible = true
|
||||
scrollbarAnimator = scrollbar.animate().translationX(0f).alpha(1f)
|
||||
.setDuration(SCROLLBAR_ANIM_DURATION)
|
||||
.setDuration(animationDuration)
|
||||
.setListener(alphaAnimatorListener)
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideScrollbar() {
|
||||
scrollbarAnimator = scrollbar.animate().translationX(scrollbarPaddingEnd).alpha(0f)
|
||||
.setDuration(SCROLLBAR_ANIM_DURATION)
|
||||
.setDuration(animationDuration)
|
||||
.setListener(object : AnimatorListenerAdapter() {
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
super.onAnimationEnd(animation)
|
||||
|
||||
@@ -9,6 +9,7 @@ import coil.request.ImageRequest
|
||||
import coil.request.ImageResult
|
||||
import coil.request.SuccessResult
|
||||
import com.google.android.material.progressindicator.BaseProgressIndicator
|
||||
import org.koitharu.kotatsu.R
|
||||
import org.koitharu.kotatsu.core.network.CommonHeaders
|
||||
import org.koitharu.kotatsu.utils.progress.ImageRequestIndicatorListener
|
||||
|
||||
@@ -41,7 +42,12 @@ fun ImageRequest.Builder.indicator(indicator: BaseProgressIndicator<*>): ImageRe
|
||||
return listener(ImageRequestIndicatorListener(indicator))
|
||||
}
|
||||
|
||||
@Suppress("SpellCheckingInspection")
|
||||
fun ImageRequest.Builder.crossfade(context: Context?): ImageRequest.Builder {
|
||||
val scale = context?.animatorDurationScale ?: 1f
|
||||
return crossfade((300 * scale).toInt())
|
||||
if (context == null) {
|
||||
crossfade(true)
|
||||
return this
|
||||
}
|
||||
val duration = context.resources.getInteger(R.integer.config_defaultAnimTime) * context.animatorDurationScale
|
||||
return crossfade(duration.toInt())
|
||||
}
|
||||
Reference in New Issue
Block a user