如何确保视图在重复触摸后被移除动画
问题描述:
在触摸事件上,创建自定义的可绘制视图,添加到根视图,以便它显示在屏幕上,然后我有一个淡入淡出动画,以淡化它。这一切都在工作,但没有压力!如何确保视图在重复触摸后被移除动画
当我重复执行触摸事件,例如一秒钟内快速触摸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);
}
}
这是从UIThread内公共布尔onTouch(查看视图,MotionEvent motionEvent)
答
奇怪的是,中执行此得到解决取出removeView在onAnimationEnd:
@Override
public void onAnimationEnd(Animation animation) {
// No processing needed
}
我不明白为什么删除删除视图的行,已停止视图被意外添加。有任何想法吗?