android 监测鼠标滑轮,android2.3 监控鼠标滑动事件

鼠标滑过图标时(ImageButton), 在button的onTouch事件中,能检测到鼠标的滑动。

1. ViewRoot.javad ispatchMotion(MotionEvent event, boolean sendDone) 能检测到鼠标的事件。

boolean isDown = false;

private void dispatchMotion(MotionEvent event, boolean sendDone) {

int source = event.getSource();

int action = event.getAction();

if ((source & InputDevice.SOURCE_CLASS_POINTER) != 0) {

boolean isMouse = ((source & InputDevice.SOURCE_MOUSE) ^ InputDevice.SOURCE_MOUSE) == 0;

dispatchPointer(event, sendDone);

} else if ((source & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) {

dispatchTrackball(event, sendDone);

} else {

// TODO

Log.v(TAG, "Dropping unsupported motion event (unimplemented): " + event);

if (sendDone) {

finishInputEvent();

}

}

}

2. 在ViewGroup.java中,接受自定义的事件。

在dispatchTouchEvent(MotionEvent ev)方法中,增加对事件的处理。

if (action == MotionEvent.ACTION_HOVER_MOVE) {

if (mMotionTarget != null) {

mMotionTarget = null;

}

// If we're disallowing intercept or if we're allowing and we didn't

// intercept

if (disallowIntercept || !onInterceptTouchEvent(ev)) {

// We know we want to dispatch the event down, find a child

// who can handle it, start with the front-most child.

final int scrolledXInt = (int) scrolledXFloat;

final int scrolledYInt = (int) scrolledYFloat;

final View[] children = mChildren;

final int count = mChildrenCount;

for (int i = count - 1; i >= 0; i--) {

final View child = children[i];

if ((child.mViewFlags & VISIBILITY_MASK) == VISIBLE

|| child.getAnimation() != null) {

child.getHitRect(frame);

if (frame.contains(scrolledXInt, scrolledYInt)) {

// offset the event to the view's coordinate system

final float xc = scrolledXFloat - child.mLeft;

final float yc = scrolledYFloat - child.mTop;

ev.setLocation(xc, yc);

if (child.dispatchTouchEvent(ev)) {

mMotionTarget = child;

return true;

}

// The event didn't get handled, try the next view.

// Don't reset the event's location, it's not

// necessary here.

}

}

}

return true; }

}

MotionEvent.ACTION_HOVER 的定义见下一篇。

你可能感兴趣的:(android,监测鼠标滑轮)