Code Monkey home page Code Monkey logo

circularrevealdemo's Introduction

CircularRevealDemo

This is a sample app that shows circular reveal animation between activity switch.

If we jump from activity A to B, then the key steps for this effect just like below

  1. Declare activity B with no animation theme.
<style name="NoAnimTheme" parent="AppTheme">
    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
</style>
  1. Send touch position to activity B when jump from A
val intent = Intent(this@MainActivity, AnimationActivity::class.java)
intent.putExtra("x", event.x.toInt())
intent.putExtra("y", event.y.toInt())
startActivity(intent)
  1. Receive position in activity B and create reveal animation then start
private fun createRevealAnimator(reversed: Boolean, x: Int, y: Int): Animator {
    val hypot = Math.hypot(root.width.toDouble(), root.height.toDouble()).toFloat()
    val startRadius = if (reversed) hypot else 0f
    val endRadius = if (reversed) 0f else hypot

    val animator = ViewAnimationUtils.createCircularReveal(root, x, y, startRadius, endRadius)
    animator.duration = 600
    animator.interpolator = AccelerateDecelerateInterpolator()
    if (reversed) {
        animator.addListener(animatorListener)
    }
    return animator
}
  1. If we return back from activity B to A, just use the same animation, be careful to hide content view after animation end.
override fun onAnimationEnd(animation: Animator?) {
    root.visibility = View.INVISIBLE
    finish()
}

circularrevealdemo's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.