Manu Joseph
Manu Joseph

Reputation: 155

Delay shared element transition to complete statelist animation

I've been trying out shared element transition on Lollipop. i have a recyclerview which loads some cards and one click the card expands to its details in the next activity.

I have set a ripple effect and a StateListAnimator on the card. But those are not visible cause the transition starts before these effects are completed.

Is there any way to delay the transition so that it can wait for the statelist animator and ripple to complete?

Here is the code I use

ActivityOptions options = null;
        if (Utilities.isLollipop()) {
            options = ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(view, "hero_view"), Pair.create((View) fab, "fab"));
 startActivity(detailIntent, options.toBundle());
        }

Thanks in advance

Upvotes: 1

Views: 1966

Answers (2)

Naveen Kumar M
Naveen Kumar M

Reputation: 7557

The way that may help some that already have the Transitions setup in Second Activity:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().getSharedElementEnterTransition().setDuration(500);
    getWindow().getSharedElementReturnTransition().setDuration(500)
        .setInterpolator(new DecelerateInterpolator());
}

Upvotes: 0

Manu Joseph
Manu Joseph

Reputation: 155

I ended up using a work around, but I still would want to know what is the right way of doing this and therefore leaving the question open.

The work around I did was 1. remove the state list animator and add that as an animator in the onclick method. 2. Used a Handler to post a delayed call to the activity

new Handler().postDelayed(new Runnable() {
                      @Override
                      public void run() {

                          Intent i=new Intent(SearxhJobs.this,JobsTypes.class);
                          startActivity(i);
                      }
                  }, 200);

P.S- I did end up removing the effect as it was not very intuitive.

Upvotes: 0

Related Questions