0

我有一个组件,我想在触摸时对内容和显示进行各种更改,并在手指返回时恢复。以下内容通常有效,但如果用户的手指在抬起之前离开组件本身,则 ACTION_UP 永远不会触发,因此它永远不会恢复到“向上”状态。

public class MyComponent extends SomeLayout {
    // ... stuff
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        final int action = event.getAction() & MotionEvent.ACTION_MASK;
        switch (action) {
        case MotionEvent.ACTION_DOWN :
            // do something...
            break;          
        case MotionEvent.ACTION_UP :
            // do something else...
            break;      
        }   
        return super.onTouchEvent(event);
    }
}

此 ViewGroup 具有复杂的内容,不适合 StateDrawables。

有什么建议么?

TYIA

4

1 回答 1

0

对于未来的搜索者,答案是 ACTION_CANCEL...

public class MyComponent extends SomeLayout {
    // ... stuff
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        final int action = event.getAction() & MotionEvent.ACTION_MASK;
        switch (action) {
        case MotionEvent.ACTION_DOWN :
            // do something...
            break;          
        case MotionEvent.ACTION_UP :
        case MotionEvent.ACTION_CANCEL :
            // do something else...
            break;      
        }   
        return super.onTouchEvent(event);
    }
}
于 2012-05-04T05:01:22.803 回答