Невозможно запустить этот аниматор на отдельном виде

Кто-нибудь может сказать мне, что с этим не так?

View view = findViewById(R.id.thumbnail_image_header); // thumbnail_image_header - это imageView

    int cx = (view.getLeft() + view.getRight()) / 2;
    int cy = (view.getTop() + view.getBottom()) / 2;

    // get the final radius for the clipping circle
    int dx = Math.max(cx, view.getWidth() - cx);
    int dy = Math.max(cy, view.getHeight() - cy);
    float finalRadius = (float) Math.hypot(dx, dy);

    // Android native animator
    Animator animator =
            ViewAnimationUtils.createCircularReveal(view, cx, cy, 0, finalRadius);
    animator.setInterpolator(new AccelerateDecelerateInterpolator());
    animator.setDuration(1500);
    animator.start();
0
0
1 355
2

Ответы 2

Добавьте анимацию под addOnLayoutChangeListener MainLayout.

mainView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
        @Override
        public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
            view.removeOnLayoutChangeListener(this);

            //Add circular revel animation on activity start
            mainView.post(new Runnable() {
                @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void run() {
                    //Your Animation Code
                }
            });

        }
    });

Вы можете проверить, прикреплено ли представление в данный момент или нет. Если нет, добавьте OnAttachStateChangeListener и запустите анимацию, как только изображение будет прикреплено.

if (view.isAttachedToWindow()) {

    // startAnimation..

} else {
    view.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
        @Override
        public void onViewAttachedToWindow(View v) {                
            v.removeOnAttachStateChangeListener(this);

            // startAnimation..

        }
        
        @Override
        public void onViewDetachedFromWindow(View v) {
        }
    });
}

Другие вопросы по теме