(备忘)自定义viewgroup与点击分发事件

时间:2024-08-21 16:34:56

public class ScoreButton extends ViewGroup

在类中重写onTouchEvent方法

@Override
public boolean onTouchEvent(MotionEvent event) {

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.i("aaa","action_down");
setState(state.PRESSED);
break;
case MotionEvent.ACTION_UP:
Log.i("aaa","action_up");
setState(state.RUNNING);
mMoveCircle.startAnimation(animation);
break;
}

发现ACTION_UP事件从来不执行

解决办法:在调用此控件的MainActivity中拿到此控件的对象,并且

给它设置一个onclicklistener(传入null也可以)

scoreButton.setOnClickListener(null);

这样就可以监听到ACTION_UP事件了(以及ACTION_MOVE等)

======================================

在相对布局或者帧布局文件中,通常写在下面的控件后渲染,所以显示在最顶层

但是就算是写到上面导致被遮住了,只要遮住它的控件不拦截点击事件,它仍能响应点击事件(虽然看不到)