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 的定义见下一篇。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值