我有一个自定义视图,在触摸时会执行一些自定义绘制,并且我想在绘制完成后触发click事件。
我尝试重写onTouchEvent以启动动画并在绘制完成后调用performClick(),但我在这里丢失了click事件....
有人能够完成这项工作吗?
在我的ontouch中,我使用drawFantastic
开始绘制过程@Override
public boolean onTouchEvent(MotionEvent event) {
touch_x = event.getX();
touch_y = event.getY();
fantasticRadius = 0;
fantasticRadius2 = 0;
drawFantastic();
return super.onTouchEvent(event);
}
这就是我绘制视图的方式,并希望在绘制后调用performClick
private void drawFantastic() {
final Runnable fantasticRunnable = new Runnable() {
@Override
public void run() {
fantasticRadius+=15;
// 2nd radius :)
if(fantasticRadius>35)
fantasticRadius2+=15;
invalidate();
if(!isFantastic()){
fantasticHandler.postDelayed(this, 15);
} else {
animationFinished = true;
performClick();
}
}
};
fantasticHandler.post(fantasticRunnable);
}
以下是我尝试拦截click事件的方法
@Override
public boolean performClick() {
if(animationFinished == true) {
return super.performClick();
}else {
return false;
}
}
我添加了一些日志记录,基本上看起来像super.performClick();没有做我认为它应该做的事情......
答案 0 :(得分:0)
尝试拦截TouchEvents:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
// your stuff
return super.onTouchEvent(event);
}
希望这有帮助。