Android-Gesture Recognition (common gesture recognition: top, bottom, left, and right; custom Gesture Recognition: Right and Wrong)
1. Review
I learned about 10 instances of Android system services in the previous article. Of course, more system services are not used. The regret is that the demo was not shared last night;
2. Key Points
(1) OnTouchListener for upper, lower, and left Gesture Recognition
(2) OnTouchListener + SimpleOnGestureListener + GestureDetector for upper, lower, and left Gesture Recognition
(3) GestureOverlayView + GestureLibrary + ongesturew.medlistener for custom Gesture Recognition
3.
Common Gesture Recognition: Custom gesture recognition:
4. Image preparation
In order to achieve better results, we made nine Images Using ps for a more intuitive display;
(1) standby
(2) normal gesture judgment: upper, lower, and left
(3) custom gesture judgment: Right, wrong, circle, and thunder
5. OnTouchListener for upper, lower, and left Gesture Recognition
5.1 ideas
(1) OnTouchListener has been used before and used in ViewFlipper;
(2) Set OnTouchListener for judgment in the same way as the basic idea;
5.2 Implementation
Set listening for images or la S;
/*** Method 1: * add a touch event listener * @ author yuan **/class imgtestTouchListener implements OnTouchListener {private int x = 0; private int y = 0; @ Overridepublic boolean onTouch (View v, MotionEvent event) {// you can use x and y to determine the sliding gesture. // However, you can only determine whether the slider is on, down, or left, right-sliding switch (event. getAction () {case MotionEvent. ACTION_DOWN: // when the finger is pressed: Initialize x, y value x = (int) event. getX (); y = (int) event. getY (); break; case MotionEvent. ACTION_MOVE: // do not move it, Because judging the gesture here is only related to the position of the press and the position of the lift; break; case MotionEvent. ACTION_UP:/** triggered when the finger is raised, so the ** 1. obtain the end x, y * 2. determine */int upx = (int) event. getX (); int upy = (int) event. getY (); String result = drawTouch (upx, upy); // reminds textView1.setText (result); break;} return true;} private String drawTouch (int upx, int upy) {String str = No sliding; // horizontal sliding if (upx-x> 100) {str = sliding to the right; // change the image img_test.setImageResource (R. drawable. icon_right);} else if (x-upx> 100) {str = sliding to the left; // change the image img_test.setImageResource (R. drawable. icon_left);} else if (upy-y> 100) {str = slide down; // change the image img_test.setImageResource (R. drawable. icon_down);} else if (y-upy> 100) {str = slide up; // change the image img_test.setImageResource (R. drawable. icon_up) ;}return str ;}}
6. OnTouchListener + SimpleOnGestureListener + GestureDetector for upper and lower-left Gesture Recognition
6.1 ideas
(1) Like OnTouchListener, The MotionEvent object is handed over to the GestureDeteCtor object for processing.
(2) GestureDetector implements not only the upper and lower sides of the judgment, but also the onFling () method.
6.2 Implementation
(1) declare and instantiate GestureDetector
private GestureDetector gestureDetector;
(2) It must be instantiated in OnCreate. Otherwise, a null pointer exception is reported.
// 00. initialize the GestureDetector object gestureDetector = new GestureDetector (MainActivity. this, new GestureDelectorSimlpeListener ());
(3) Implement the SimpleOnGestureListener listener
/*** 2. inherit the SimpleOnGestureListener * overload gesture of Interest * @ author yuan **/class extends SimpleOnGestureListener {@ Overridepublic boolean onFling (MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {/** slide using the onFling () method * 3. judge */String result = drawTouch (e1.getX (), e1.getY (), e2.getX (), e2.getY (); textView1.setText (result); return true ;} /*** gesture judgment ** @ param x * @ param y * @ param upx * @ param upy * @ return */private String drawTouch (float x, float y, float upx, float upy) {String str = no slide; // horizontal slide if (upx-x> 100) {str = slide to the right; // change the image img_test.setImageResource (R. drawable. icon_right);} else if (x-upx> 100) {str = sliding to the left; // change the image img_test.setImageResource (R. drawable. icon_left);} else if (upy-y> 100) {str = slide down; // change the image img_test.setImageResource (R. drawable. icon_down);} else if (y-upy> 100) {str = slide up; // change the image img_test.setImageResource (R. drawable. icon_up) ;}return str ;}}
(4) OnTouchListener listener
/*** Second method ** use GestureDetector to operate **/class GestureOntouchListener implements OnTouchListener {@ Overridepublic boolean onTouch (View v, MotionEvent event) {// 1. obtain the motionEvent object gestureDetector. onTouchEvent (event); return true ;}}