2

このライブラリを使用して、ロリポップ以前のデバイスで CircularReveal アニメーションを作成します。View問題はアニメーションで隠すことです。アニメーションも行いますが、アニメーション終了後、View一瞬表示されて消えます。の点滅を防ぐにはどうすればよいViewですか?

ViewCircularReveal アニメーションで非表示にする方法は次のとおりです。

public static void revealCloseTopRight(final View view) {
            int cx = view.getRight();
            int cy = view.getTop();

            // 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);

            SupportAnimator animator = ViewAnimationUtils.createCircularReveal(view, cx, cy, 0, finalRadius);
            animator.setInterpolator(new AccelerateDecelerateInterpolator());
            animator.setDuration(animDuration);
            animator = animator.reverse();

            try {
                animator.start();
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            view.postDelayed(new Runnable() {
                @Override
                public void run() {
                    view.setVisibility(View.INVISIBLE);
                }
            }, animDuration);
        }

アップデート

私も次のように追加しようとしましたSupportAnimator.AnimatorListener()

animator.addListener(new SupportAnimator.AnimatorListener() {
                @Override
                public void onAnimationStart() {
                    Log.d(AnimationSupport.TAG, TAG + " -> 1onAnimationStart()");

                }

                @Override
                public void onAnimationEnd() {
                    Log.d(AnimationSupport.TAG, TAG + " -> 1onAnimationEnd()");
                    view.setVisibility(View.INVISIBLE);
                }

                @Override
                public void onAnimationCancel() {
                    Log.d(AnimationSupport.TAG, TAG + " -> 1onAnimationCancel()");

                }

                @Override
                public void onAnimationRepeat() {
                    Log.d(AnimationSupport.TAG, TAG + " -> 1onAnimationRepeat()");

                }
            });

そしてAnimator.AnimatorListener()、このように:

animator.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                    Log.d(AnimationSupport.TAG, TAG + " -> onAnimationStart()");

                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    Log.d(AnimationSupport.TAG, TAG + " -> onAnimationEnd()");
                    view.setVisibility(View.INVISIBLE);
                }

                @Override
                public void onAnimationCancel(Animator animation) {
                    Log.d(AnimationSupport.TAG, TAG + " -> onAnimationCancel()");

                }

                @Override
                public void onAnimationRepeat(Animator animation) {
                    Log.d(AnimationSupport.TAG, TAG + " -> onAnimationRepeat()");

                }
            });

どちらの場合も、このコールバックの none は呼び出されません。理由がわかりません。

4

2 に答える 2