0

如何在应用程序开始时获得圆形显示动画

CircularRevealTransition();

public void CircularRevealTransition() {

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

    float finalRadius = (float) Math.hypot(cx,cy);

    Animator animator = ViewAnimationUtils.createCircularReveal(findViewById(R.id.cicular_reveal_id),cx,cy,0,finalRadius);
    view.setVisibility(View.VISIBLE);

    animator.start();
}

我已经在 onCreate 方法中编写了这段代码,它仅在单击按钮应用时才有效,但不适用于应用程序的启动

4

1 回答 1

0

OnCreate方法太早开始动画了,因为真正的绘图要晚得多。在 绘制视图之前,它会调用OnPreDrawListener 。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View view = LayoutInflater.from(this).inflate(R.layout.activity_main, null);
        view.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                view.getViewTreeObserver().removeOnPreDrawListener(this);

                CircularRevealTransition();
                return true;
            }
        });
    }
于 2019-10-07T07:13:47.800 回答