初始屏幕中的Cicular Reveal动画

时间:2019-10-04 18:51:44

标签: material-design android-animation circularreveal

如何在应用程序启动时获取圆形显示动画

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方法中编写了这段代码,它只有在单击按钮时才起作用,而在应用程序启动时不起作用

1 个答案:

答案 0 :(得分: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;
            }
        });
    }