androidanimationandroid-animationandroid-5.0-lollipopviewanimator

ViewAnimationUtils - No animation occurs


I'm trying to use a Circular Reveal to animate in a LinearLayout on click of a FAB.

Onclick, the view changes to become visible after a time delay, but no visible animation runs? In addition, when the function is reversed as an exit animation the view is invisible for the duration of the animation.

The code:

//Rest of method triggered onClick Above
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        circleReveal(formcontainer,addnewbutton);
        ObjectAnimator.ofFloat(addnewbutton, "translationY", -heightbutton).start();
    }
}

public void circleReveal(LinearLayout formLayout, FloatingActionButton fab) {

    int cx = (fab.getLeft() + fab.getRight()) / 2;
    int cy = (fab.getTop() + fab.getBottom()) / 2;

    int radius = Math.max(formLayout.getWidth(), formLayout.getHeight());

    Animator reveal = createCircularReveal(formLayout, cx, cy, 0, radius);

    formLayout.setVisibility(View.VISIBLE);
    reveal.setDuration(2000);
    reveal.start();
}

Many thanks in advance for your help!

[EDIT] After testing, i've noticed that it's just this view that it fails on? Every other view in my layout that i've tried works fine?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/formcontainer"
              android:background="@android:color/white"
              android:layout_width="match_parent"
              android:layout_height="65dp"
              android:orientation="vertical"
              android:baselineAligned="false"
              android:paddingLeft="@dimen/activity_horizontal_margin"
              android:paddingRight="@dimen/activity_horizontal_margin"
              android:gravity="bottom"
              android:layout_marginBottom="0dp"
              android:elevation="4dp"
              android:layout_alignParentBottom="true">

[EDIT 2] So, i've partially solved the issue, in that the animation now works, but only when the centre is not calculated from the FAB?


Solution

  • The circular animation runs with respect to the View itself. So, your center should be:

    int cx = fab.getWidth() / 2;
    int cy = fab.getHeight() / 2;