aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt66
1 files changed, 57 insertions, 9 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt b/core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt
index d8e4681..0a548ce 100644
--- a/core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt
+++ b/core/src/main/kotlin/ca/allanwang/kau/utils/AnimUtils.kt
@@ -1,15 +1,30 @@
+/*
+ * Copyright 2018 Allan Wang
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package ca.allanwang.kau.utils
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.annotation.SuppressLint
-import androidx.annotation.StringRes
import android.view.View
import android.view.ViewAnimationUtils
import android.view.ViewPropertyAnimator
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.widget.TextView
+import androidx.annotation.StringRes
/**
* Created by Allan Wang on 2017-06-01.
@@ -19,7 +34,15 @@ import android.widget.TextView
@SuppressLint("NewApi")
@KauUtils
-fun View.circularReveal(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float = -1.0f, duration: Long = 500L, onStart: (() -> Unit)? = null, onFinish: (() -> Unit)? = null) {
+fun View.circularReveal(
+ x: Int = 0,
+ y: Int = 0,
+ offset: Long = 0L,
+ radius: Float = -1.0f,
+ duration: Long = 500L,
+ onStart: (() -> Unit)? = null,
+ onFinish: (() -> Unit)? = null
+) {
if (!isAttachedToWindow) {
onStart?.invoke()
visible()
@@ -29,7 +52,10 @@ fun View.circularReveal(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float
if (!buildIsLollipopAndUp) return fadeIn(offset, duration, onStart, onFinish)
val r = if (radius >= 0) radius
- else Math.max(Math.hypot(x.toDouble(), y.toDouble()), Math.hypot((width - x.toDouble()), (height - y.toDouble()))).toFloat()
+ else Math.max(
+ Math.hypot(x.toDouble(), y.toDouble()),
+ Math.hypot((width - x.toDouble()), (height - y.toDouble()))
+ ).toFloat()
val anim = ViewAnimationUtils.createCircularReveal(this, x, y, 0f, r).setDuration(duration)
anim.startDelay = offset
@@ -47,7 +73,15 @@ fun View.circularReveal(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float
@SuppressLint("NewApi")
@KauUtils
-fun View.circularHide(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float = -1.0f, duration: Long = 500L, onStart: (() -> Unit)? = null, onFinish: (() -> Unit)? = null) {
+fun View.circularHide(
+ x: Int = 0,
+ y: Int = 0,
+ offset: Long = 0L,
+ radius: Float = -1.0f,
+ duration: Long = 500L,
+ onStart: (() -> Unit)? = null,
+ onFinish: (() -> Unit)? = null
+) {
if (!isAttachedToWindow) {
onStart?.invoke()
invisible()
@@ -57,7 +91,10 @@ fun View.circularHide(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float =
if (!buildIsLollipopAndUp) return fadeOut(offset, duration, onStart, onFinish)
val r = if (radius >= 0) radius
- else Math.max(Math.hypot(x.toDouble(), y.toDouble()), Math.hypot((width - x.toDouble()), (height - y.toDouble()))).toFloat()
+ else Math.max(
+ Math.hypot(x.toDouble(), y.toDouble()),
+ Math.hypot((width - x.toDouble()), (height - y.toDouble()))
+ ).toFloat()
val anim = ViewAnimationUtils.createCircularReveal(this, x, y, r, 0f).setDuration(duration)
anim.startDelay = offset
@@ -75,7 +112,12 @@ fun View.circularHide(x: Int = 0, y: Int = 0, offset: Long = 0L, radius: Float =
}
@KauUtils
-fun View.fadeIn(offset: Long = 0L, duration: Long = 200L, onStart: (() -> Unit)? = null, onFinish: (() -> Unit)? = null) {
+fun View.fadeIn(
+ offset: Long = 0L,
+ duration: Long = 200L,
+ onStart: (() -> Unit)? = null,
+ onFinish: (() -> Unit)? = null
+) {
if (!isAttachedToWindow) {
onStart?.invoke()
visible()
@@ -97,7 +139,12 @@ fun View.fadeIn(offset: Long = 0L, duration: Long = 200L, onStart: (() -> Unit)?
}
@KauUtils
-fun View.fadeOut(offset: Long = 0L, duration: Long = 200L, onStart: (() -> Unit)? = null, onFinish: (() -> Unit)? = null) {
+fun View.fadeOut(
+ offset: Long = 0L,
+ duration: Long = 200L,
+ onStart: (() -> Unit)? = null,
+ onFinish: (() -> Unit)? = null
+) {
if (!isAttachedToWindow) {
onStart?.invoke()
invisible()
@@ -130,7 +177,8 @@ fun TextView.setTextWithFade(text: String, duration: Long = 200, onFinish: (() -
}
@KauUtils
-fun TextView.setTextWithFade(@StringRes textId: Int, duration: Long = 200, onFinish: (() -> Unit)? = null) = setTextWithFade(context.getString(textId), duration, onFinish)
+fun TextView.setTextWithFade(@StringRes textId: Int, duration: Long = 200, onFinish: (() -> Unit)? = null) =
+ setTextWithFade(context.getString(textId), duration, onFinish)
@KauUtils
-fun ViewPropertyAnimator.scaleXY(value: Float) = scaleX(value).scaleY(value) \ No newline at end of file
+fun ViewPropertyAnimator.scaleXY(value: Float) = scaleX(value).scaleY(value)