Stay organized with collections
Save and categorize content based on your preferences.
ViewAnimationUtils
class ViewAnimationUtils
Defines common utilities for working with View's animations.
Summary
Public methods |
static Animator! |
Returns an Animator which can animate a clipping circle.
|
Public methods
createCircularReveal
static fun createCircularReveal(
view: View!,
centerX: Int,
centerY: Int,
startRadius: Float,
endRadius: Float
): Animator!
Returns an Animator which can animate a clipping circle.
Any shadow cast by the View will respect the circular clip from this animator.
Only a single non-rectangular clip can be applied on a View at any time. Views clipped by a circular reveal animation take priority over View Outline clipping
.
Note that the animation returned here is a one-shot animation. It cannot be re-used, and once started it cannot be paused or resumed. It is also an asynchronous animation that automatically runs off of the UI thread. As a result AnimatorListener.onAnimationEnd(Animator)
will occur after the animation has ended, but it may be delayed depending on thread responsiveness.
Note that if any start delay is set on the reveal animator, the start radius will not be applied to the reveal circle until the start delay has passed. If it's desired to set a start radius on the reveal circle during the start delay, one workaround could be adding an animator with the same start and end radius. For example:
<code>
public static Animator createRevealWithDelay(View view, int centerX, int centerY, float startRadius, float endRadius) {
Animator delayAnimator = ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, startRadius);
delayAnimator.setDuration(delayTimeMS);
Animator revealAnimator = ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, endRadius);
AnimatorSet set = new AnimatorSet();
set.playSequentially(delayAnimator, revealAnimator);
return set;
}
</code>
Parameters |
view |
View!: The View will be clipped to the animating circle. |
centerX |
Int: The x coordinate of the center of the animating circle, relative to view . |
centerY |
Int: The y coordinate of the center of the animating circle, relative to view . |
startRadius |
Float: The starting radius of the animating circle. |
endRadius |
Float: The ending radius of the animating circle. |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[],null,["# ViewAnimationUtils\n\nAdded in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)\n\nViewAnimationUtils\n==================\n\n*** ** * ** ***\n\nKotlin \\|[Java](/reference/android/view/ViewAnimationUtils \"View this page in Java\") \n\n```\nclass ViewAnimationUtils\n```\n\n|---|--------------------------------------|\n| [kotlin.Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html) ||\n| ↳ | [android.view.ViewAnimationUtils](#) |\n\nDefines common utilities for working with View's animations.\n\nSummary\n-------\n\n| Public methods ||\n|-------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| static [Animator](../animation/Animator.html#)! | [createCircularReveal](#createCircularReveal(android.view.View,%20kotlin.Int,%20kotlin.Int,%20kotlin.Float,%20kotlin.Float))`(`view:` `[View](/reference/kotlin/android/view/View)!`, `centerX:` `[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`, `centerY:` `[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`, `startRadius:` `[Float](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html)`, `endRadius:` `[Float](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html)`)` Returns an Animator which can animate a clipping circle. |\n\nPublic methods\n--------------\n\n### createCircularReveal\n\nAdded in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels) \n\n```\nstatic fun createCircularReveal(\n view: View!, \n centerX: Int, \n centerY: Int, \n startRadius: Float, \n endRadius: Float\n): Animator!\n```\n\nReturns an Animator which can animate a clipping circle.\n\nAny shadow cast by the View will respect the circular clip from this animator.\n\nOnly a single non-rectangular clip can be applied on a View at any time. Views clipped by a circular reveal animation take priority over [View Outline clipping](/reference/kotlin/android/view/View#setClipToOutline(kotlin.Boolean)).\n\nNote that the animation returned here is a one-shot animation. It cannot be re-used, and once started it cannot be paused or resumed. It is also an asynchronous animation that automatically runs off of the UI thread. As a result [AnimatorListener.onAnimationEnd(Animator)](../animation/Animator.AnimatorListener.html#onAnimationEnd(android.animation.Animator)) will occur after the animation has ended, but it may be delayed depending on thread responsiveness.\n\nNote that if any start delay is set on the reveal animator, the start radius will not be applied to the reveal circle until the start delay has passed. If it's desired to set a start radius on the reveal circle during the start delay, one workaround could be adding an animator with the same start and end radius. For example: \n\n```kotlin\n\u003ccode\u003e\n public static Animator createRevealWithDelay(View view, int centerX, int centerY, float startRadius, float endRadius) {\n Animator delayAnimator = ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, startRadius);\n delayAnimator.setDuration(delayTimeMS);\n Animator revealAnimator = ViewAnimationUtils.createCircularReveal(view, centerX, centerY, startRadius, endRadius);\n AnimatorSet set = new AnimatorSet();\n set.playSequentially(delayAnimator, revealAnimator);\n return set;\n }\n \u003c/code\u003e\n```\n\n| Parameters ||\n|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `view` | [View](/reference/kotlin/android/view/View)!: The View will be clipped to the animating circle. |\n| `centerX` | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html): The x coordinate of the center of the animating circle, relative to `view`. |\n| `centerY` | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html): The y coordinate of the center of the animating circle, relative to `view`. |\n| `startRadius` | [Float](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html): The starting radius of the animating circle. |\n| `endRadius` | [Float](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-float/index.html): The ending radius of the animating circle. |"]]