MotionEventCompat函数已被弃用,需要使用新的替代方法。

45

9
好问题!为什么会有踩票?人们真的好刻薄!我点了赞!;) - Dombi Bence
2个回答

73
你可以直接使用MotionEvent对象来实现相同的效果。请参见下面的示例和比较:
public boolean onTouch(MotionEvent motionEvent) {
    // previously you would do this
    final int action = MotionEventCompat.getActionMasked(motionEvent);
    // now you would do this
    final int action = motionEvent.getActionMasked();
}

我觉得你可能有些困惑,因为一些Android文档尚未更新其示例代码,所以其中一些示例代码仍在使用已弃用的方法。

更多信息,请阅读此处

希望能对你有所帮助。


MotionEvent虽然没有MotionEventCompat的所有功能... - Justin
Android 正在停止对老设备的支持。"您应尽可能使用支持库类来提供与运行 Android 1.6 及更高版本的设备的兼容性。" https://developer.android.com/training/gestures/detector - user1021364
4
为什么Android文档页面示例中仍然包含已弃用的函数,例如MotionEventCompat.getActionMasked(event)? - Rahul Kahale

3

我知道这是一个老问题,但我不得不重构一些代码并更新这些已弃用的函数。 重构很容易,只需执行以下操作:

  • 如果您使用像MotionEventCompat.ACTION_MASK这样的常量,则将其替换为MotionEvent.ACTION_MASK
  • 每当您有像MotionEventCompat.getPointerId(ev, index);这样的东西时,请改为使用ev.getPointerId(index);

就是这样! 我将列举更多示例以使其更清晰:

  • MotionEventCompat.ACTION_POINTER_DOWN替换为MotionEvent.ACTION_POINTER_DOWN
  • MotionEventCompat.ACTION_POINTER_UP替换为MotionEvent.ACTION_POINTER_UP
  • MotionEventCompat.getX(ev, pointerIndex);替换为ev.getX(pointerIndex);
  • MotionEventCompat.getY(ev, pointerIndex);替换为ev.getY(pointerIndex);
  • MotionEventCompat.getActionIndex(ev);替换为ev.getActionIndex();

此外(与此问题不直接相关),我不得不将VelocityTrackerCompat.getXVelocity(velocityTracker, mActivePointerId);替换为velocityTracker.getXVelocity(mActivePointerId);

我希望这能帮助未来的某个人 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接