如何在重复触摸动画后确保删除视图

时间:2017-10-20 15:11:40

标签: android animation

在触摸事件中,创建了一个自定义可绘制视图,添加到根视图中,因此它显示在屏幕上,然后我有一个淡入淡出动画,以淡化它。它一切正常,但没有压力!

当我反复执行触摸事件时,例如在一秒钟内进行3次快速触摸,自定义绘图会意外地留在屏幕上。

这是为什么?我希望每次都删除它。这是代码:

/*
 * Adds view and fades out
 */
public void fadeoutView(final View v){

        if (rootView != null) {
            rootView.removeView(v);
        }
        rootView.addView(v);

        Log.v(LOG_TAG, "Fadeout called");
        final Animation fadeOut = new AlphaAnimation(1.0f, 0.0f);
        fadeOut.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                Log.v(LOG_TAG, "Fadeout onAnimationStart t:" + System.currentTimeMillis());

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                Log.v(LOG_TAG, "Fadeout onAnimationEnd t:" + System.currentTimeMillis());
                if (v != null && rootView != null) {
                    rootView.removeView(v);
                }

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        fadeOut.setFillAfter(true); // Want to keep affect
        fadeOut.setInterpolator(new DecelerateInterpolator());
        fadeOut.setStartOffset(0);
        fadeOut.setDuration(500);
        if (v != null) {
            v.startAnimation(fadeOut);
        }
}

这是在公共布尔值onTouch内的UIThread内执行的(View视图,MotionEvent motionEvent)

1 个答案:

答案 0 :(得分:0)

奇怪的是,这已经解决了在onAnimationEnd中取出removeView:

@Override
public void onAnimationEnd(Animation animation) {
    // No processing needed
}

我不明白为什么删除删除视图的行,已经停止了意外添加的视图。有什么想法吗?