Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MotionEventCompat functions are deprecated

Tags:

android

I am trying to add an onTouchEvent to a View, but I then see the deprecation support on this link: https://developer.android.com/sdk/support_api_diff/26.0.0-alpha1/changes/android.support.v4.view.MotionEventCompat.html.

enter image description here

It says, they are all deprecated. So what code should be used to replace the MotionEventCompat functions?

like image 339
Ampersanda Avatar asked Nov 05 '17 11:11

Ampersanda


2 Answers

You can instead use the MotionEvent object directly to achieve the same.

Please see the example & comparison as below:

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();
}

I think you are confused, as some of the Android documentation has yet to update their sample code, so some of their sample code is still using the deprecated methods.

For more info, please read here.

Hope this helps.

like image 200
Arial Avatar answered Nov 03 '22 04:11

Arial


I know it is an old question but, I had to refactor some code and, I had to update these deprecated functions. It is easy to refactorize it, just do this:

  • If you use constants like MotionEventCompat.ACTION_MASK, then replace them for MotionEvent.ACTION_MASK
  • Every time you have something like MotionEventCompat.getPointerId(ev, index); do this instead: ev.getPointerId(index);

And that is all! I will list a few more examples to be clearer:

  • Replace MotionEventCompat.ACTION_POINTER_DOWN by MotionEvent.ACTION_POINTER_DOWN
  • Replace MotionEventCompat.ACTION_POINTER_UP by MotionEvent.ACTION_POINTER_UP
  • Replace MotionEventCompat.getX(ev, pointerIndex); by ev.getX(pointerIndex);
  • Replace MotionEventCompat.getY(ev, pointerIndex); by ev.getY(pointerIndex);
  • Replace MotionEventCompat.getActionIndex(ev); by ev.getActionIndex();

Also (not directly related to this question) I had to replace VelocityTrackerCompat.getXVelocity(velocityTracker, mActivePointerId); by velocityTracker.getXVelocity(mActivePointerId);

I hope this can help someone else in the future :)

like image 2
Daniel S. Avatar answered Nov 03 '22 04:11

Daniel S.