在动画期间更改Z顺序

时间:2012-08-13 16:34:59

标签: java android animation view z-order

我有2个具有相同动画的视图,在此动画期间这些视图应该更改您的Z订单例如视图A在动画期间在视图B上我改变了这个顺序,我用viewA或viewB得到它。 bringToFront();但是更新不是立竿见影的,我需要在准确的时间点更改Z顺序。

感谢。

1 个答案:

答案 0 :(得分:2)

我解决这个问题如下:

首先在动画中设置自定义插值器,您的类需要实现ICustomInterpolator

animation.setInterpolator(new CustomInterpolator(this));
a.startAnimation(animation);
b.startAnimation(animation);

public void currentProgress(float p, float time) {
    if(time == yourTime){
        a.bringToFront();
        a.invalidate();
        b.invalidate();
        a.requestLayout();
        b.requestLayout();
    }
}

currentProgress是自定义插值器的Inteface方法:

public interface ICustomInterpolator {
    public void currentProgress(float p, float time);
}
customInterpolator中的

public class CustomInterpolator extends
    AccelerateDecelerateInterpolator {

    private ICustomInterpolator delegate;

    public <T extends ICustomInterpolator> CustomInterpolator(T delegate) {
        super();
        this.delegate = delegate;
    }

    @Override
    public float getInterpolation(float input) {
        delegate.currentProgress(input);
        return super.getInterpolation(input);
    }
}