1

同じアニメーションの 2 つのビューがあります。このアニメーション中に、これらのビューは Z オーダーを変更する必要があります。たとえば、ビュー A はアニメーション中にビュー B の上にあります。この順序を変更します。 ; しかし、更新は即時ではなく、正確な時点でこの Z オーダーを変更する必要があります。

ありがとう。

4

1 に答える 1

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 は、カスタム インターポレーターのインターフェイス メソッドです。

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);
    }
}
于 2012-08-16T18:23:57.360 に答える