The applyTransformation animation method does not start until I click any layout

This is so weird that I have this animation code:

public class ExpandAnimation extends Animation {
private View mAnimatedView;
private MarginLayoutParams mViewLayoutParams;
private int mMarginStart, mMarginEnd;
private boolean mWasEndedAlready = false;

/**
* Initialize the animation
* @param view The layout we want to animate
* @param duration The duration of the animation, in ms
*/
    public ExpandAnimation(View view, int duration) {
        setDuration(duration);
        mAnimatedView = view;
        mViewLayoutParams = (MarginLayoutParams) view.getLayoutParams();

        mMarginStart = mViewLayoutParams.rightMargin;
        mMarginEnd = (mMarginStart == 0 ? (0- view.getWidth()) : 0);
        view.setVisibility(View.VISIBLE);
        mAnimatedView.requestLayout();
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        super.applyTransformation(interpolatedTime, t);
        if (interpolatedTime < 1.0f) {
            // Calculating the new bottom margin, and setting it
            mViewLayoutParams.rightMargin = mMarginStart
                    + (int) ((mMarginEnd - mMarginStart) * interpolatedTime);
            // Invalidating the layout, making us seeing the changes we made
            mAnimatedView.requestLayout();

        // Making sure we didn't run the ending before (it happens!)
        } else if (!mWasEndedAlready) {
            mViewLayoutParams.rightMargin = mMarginEnd;
            mAnimatedView.requestLayout();
            mWasEndedAlready = true;
        }
    }
}

And I use this animation:

View parent = (View) v.getParent();
View containerMenu = parent.findViewById(R.id.containerMenu);
ExpandAnimation anim=new ExpandAnimation(containerMenu, 1000);
containerMenu.startAnimation(anim);

This animation switches the layout or shows it.

By default it is hidden. When I click, the animation works and it displays. When I click again, it shrinks correctly. But the third time he does nothing. I was debugging, and I found out that the constructor is called , but not applyTransformation . Anyway, if I click on any layout around the screen, the animation will suddenly start.

Any idea?

Edit Does anyone know WHO is applied? Is transportation initiated?

+5
source share
1 answer

, , - , , , . . , :

hscv.scrollTo(hscv.getScrollX()+1, hscv.getScrollY()+1);

containerMenu.startAnimation(anim);

, , .

, , android > 4, , , 2.3, , , , .

parent.invalidate();

.

+7

All Articles