how can I use Reveal Animation between two activities?? There's a lot of information and examples about how to use it to start a view inside an Activity, but I want to click a button and start a Reveal Animation to open the next Activity. I tried including the second layout inside the first one and setting it Invisible, and then reveal it when the button is clicked. But it doesn't work fine. I'm wondering if I can simply define the Reveal animation as an XML, but I wouldn't know how to. Thanks
Reveal Effect successfully worked for me on activity and fragment too Apply below code to set reveal effect on activity or fragment. Remove Comment to use specific animation form below code.
->Apply this code after setcontentview
rootview = (RelativeLayout) findViewById(R.id.rootview);
rootview.setBackgroundColor(getResources().getColor(R.color.colorAccent));
rootview.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
v.removeOnLayoutChangeListener(this);
/*//BOTTOM RIGHT TO TOP LEFT ANIMATION
int cx = (framelayout.getLeft() + framelayout.getRight());
int cy = (framelayout.getTop() + framelayout.getBottom());
// get the hypothenuse so the radius is from one corner to the other
int radius = (int) Math.hypot(right, bottom);
Animator reveal = ViewAnimationUtils.createCircularReveal(v, cx, cy, 0, radius);
reveal.setInterpolator(new AccelerateDecelerateInterpolator());
reveal.setDuration(600);
reveal.start();*/
/* //LEFT TOP TO BOTTOM RIGHT ANIMATION
int cx1 = 0;
int cy1 = 0;
// get the hypothenuse so the radius is from one corner to the other
int radius1 = (int) Math.hypot(right, bottom);
Animator reveal1 = ViewAnimationUtils.createCircularReveal(v, cx1, cy1, 0, radius1);
reveal1.setInterpolator(new DecelerateInterpolator(2f));
reveal1.setDuration(1000);
reveal1.start();*/
/* //EFFECT START WITH CENTER
float finalRadius = (float) Math.hypot(v.getWidth(), v.getHeight());
int cx1 = (framelayout.getLeft() + framelayout.getRight()) / 2;
int cy1 = (framelayout.getTop() + framelayout.getBottom()) / 2;
Animator anim = ViewAnimationUtils.createCircularReveal(v, cx1, cy1, 0, finalRadius);
anim.setDuration(1000);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.start();*/
//OPEN WITH BOTTOM CENTER
int cx = (rootview.getLeft() + rootview.getRight()) / 2;
int cy = (rootview.getTop() + rootview.getBottom());
// get the hypothenuse so the radius is from one corner to the other
int radius = (int) Math.hypot(right, bottom);
Animator reveal = ViewAnimationUtils.createCircularReveal(v, cx, cy, 0, radius);
reveal.setInterpolator(new AccelerateDecelerateInterpolator());
reveal.setDuration(350);
reveal.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
// rootview.setBackgroundResource(R.color.white);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
reveal.start();
}
});
->To Hide Reveal effect onBackPressed()
// previously visible view
final View myView = findViewById(R.id.rootview);
// get the center for the clipping circle
int cx = myView.getWidth() / 2;
int cy = myView.getHeight() / 2;
// get the initial radius for the clipping circle
float initialRadius = (float) Math.hypot(cx, cy);
// create the animation (the final radius is zero)
Animator anim =
ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
anim.setDuration(50);
// make the view invisible when the animation is done
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
myView.setVisibility(View.INVISIBLE);
}
});
// start the animation
anim.start();
You can for example animate the parent Layout of your activity. Here is an answer that might help you. It fades in the Activity but if you understand how its done you can apply any Animation.
Fade In Android Launch Activity
To cancel the standard built in Activity Animations you can use this Intent.FLAG :
intent.setFlag(Intent.FLAG_ACTIVITY_NO_ANIMATION);
when you start your Activity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With