无法覆盖自定义视图点击事件

时间:2014-05-27 12:09:06

标签: android android-linearlayout android-custom-view

我有一个自定义视图,在触摸时会执行一些自定义绘制,并且我想在绘制完成后触发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();没有做我认为它应该做的事情......

1 个答案:

答案 0 :(得分:0)

尝试拦截TouchEvents:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
    return true;
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
    // your stuff
    return super.onTouchEvent(event);
}

希望这有帮助。