How to implement gesture recognition in android wear

前端 未结 2 1919
遇见更好的自我
遇见更好的自我 2021-02-14 02:53

Hello i\'m looking for how to detect gestures in android wear, in android i use some code like this, but doesn\'t work in android wear.. is there a way to override the default g

2条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-02-14 03:31

    After one day i got it to work, the lost part was that i must disable the Swipe-To-Dismiss Gesture and add DismissOverlayView to my layout, steps:

    1. Disable the Swipe-To-Dismiss Gesture add AppTheme style to your styles.xml and use it as app style in your mainfest

    styles.xml:

        
    

    AndroidManifest.xml:

        
    
    1. Add DissmissOverlayView to your main layout

          
      
    2. Use it in your activity like this to get gestures

          public class WearActivity extends Activity {
          private DismissOverlayView mDismissOverlay;
          private GestureDetector mDetector;
      
          public void onCreate(Bundle savedState) {
              super.onCreate(savedState);
              setContentView(R.layout.wear_activity);
      
              // Obtain the DismissOverlayView element
              mDismissOverlay = (DismissOverlayView) findViewById(R.id.dismiss_overlay);
              mDismissOverlay.setIntroText(R.string.long_press_intro);
              mDismissOverlay.showIntroIfNecessary();
      
              // Configure a gesture detector
              mDetector = new GestureDetector(this, new SimpleOnGestureListener() {
      
              @Override
              public void onLongPress(MotionEvent event) {
      
                  Log.d(DEBUG_TAG, " onLongPress: " + event.toString());
              }
      
              @Override
              public boolean onDown(MotionEvent event) {
                  Log.d(DEBUG_TAG," onDown: " + event.toString());
                  return true;
              }
      
              @Override
              public boolean onFling(MotionEvent event1, MotionEvent event2,
                                     float velocityX, float velocityY) {
                  Log.d(DEBUG_TAG, " onFling: " + event1.toString()+event2.toString());
                  return true;
              }
      
              @Override
              public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
                                      float distanceY) {
                  Log.d(DEBUG_TAG, " onScroll: " + e1.toString()+e2.toString());
                  return true;
              }
      
              @Override
              public void onShowPress(MotionEvent event) {
                  Log.d(DEBUG_TAG, " onShowPress: " + event.toString());
              }
      
              @Override
              public boolean onSingleTapUp(MotionEvent event) {
                  Log.d(DEBUG_TAG, " onSingleTapUp: " + event.toString());
                  return true;
              }
      
              @Override
              public boolean onDoubleTap(MotionEvent event) {
                  Log.d(DEBUG_TAG, " onDoubleTap: " + event.toString());
                  return true;
              }
      
              @Override
              public boolean onDoubleTapEvent(MotionEvent event) {
                  Log.d(DEBUG_TAG, " onDoubleTapEvent: " + event.toString());
                  return true;
              }
      
              @Override
              public boolean onSingleTapConfirmed(MotionEvent event) {
                  Log.d(DEBUG_TAG, " onSingleTapConfirmed: " + event.toString());
                  return true;
              }
              });
          }
      
          // Capture long presses
          @Override
          public boolean onTouchEvent(MotionEvent ev) {
              return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
          } 
          }
      

提交回复
热议问题