2015-07-14 6 views
1

У меня нет меню слайдера/ящика, но я бы хотел использовать событие слайдера, в котором обычно приложения показывают ящик с левой стороны экрана. Мне нужно сделать несколько разных задач, когда пользователь сделает этот жест.Как определить событие Android для слайд-шоу/салфетки с левого края экрана?

Можно ли послушать это событие? если да Как?

ответ

3
import android.app.Activity; 
import android.util.Log; 
import android.view.MotionEvent; 

public class SlidableActivity extends Activity { 
    protected static final String TAG = "SlidableActivity"; 
    private static final int ACTION_TYPE_DEFAULT = 0; 
    private static final int ACTION_TYPE_UP = 1; 
    private static final int ACTION_TYPE_RIGHT = 2; 
    private static final int ACTION_TYPE_DOWN = 3; 
    private static final int ACTION_TYPE_LEFT = 4; 
    private static final int SLIDE_RANGE = 100; 
    private float mTouchStartPointX; 
    private float mTouchStartPointY; 
    private int mActionType = ACTION_TYPE_DEFAULT; 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     int x = (int) event.getRawX(); 
     int y = (int) event.getRawY(); 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      mTouchStartPointX = event.getRawX(); 
      mTouchStartPointY = event.getRawY(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      if (mTouchStartPointX - x > SLIDE_RANGE) { 
       mActionType = ACTION_TYPE_LEFT; 
      } else if (x - mTouchStartPointX > SLIDE_RANGE) { 
       mActionType = ACTION_TYPE_RIGHT; 
      } else if (mTouchStartPointY - y > SLIDE_RANGE) { 
       mActionType = ACTION_TYPE_UP; 
      } else if (y - mTouchStartPointY > SLIDE_RANGE) { 
       mActionType = ACTION_TYPE_DOWN; 
      } 
      break; 
     case MotionEvent.ACTION_UP: 
      if (mActionType == ACTION_TYPE_UP) { 
       slideUp(); 
      } else if (mActionType == ACTION_TYPE_RIGHT) { 
       slideToRight(); 
      } else if (mActionType == ACTION_TYPE_DOWN) { 
       slideDown(); 
      } else if (mActionType == ACTION_TYPE_LEFT) { 
       slideToLeft(); 
      } 
      break; 
     default: 
      break; 
     } 
     return true; 
    } 

    protected void slideToLeft() { 
     Log.d(TAG, "slideToLeft() was called."); 
    } 

    protected void slideToRight() { 
     Log.d(TAG, "slideToRight() was called."); 
    } 

    protected void slideUp() { 
     Log.d(TAG, "slideUp() was called."); 
    } 

    protected void slideDown() { 
     Log.d(TAG, "slideDown() was called."); 
    } 
} 

Checkout это не link слишком

+0

Таким образом, мы должны написать логику для случая, Там есть не что иное, как - onSwipeMenuOpened или onSwipemenuClosed? – ted

+0

ваш не использовать правый ящик .so, переопределение onTouchEvent достаточно хорошо для обнаружения событий салфетки. –

+0

Спасибо, но Actualyl Меня интересует только это конкретное событие. Сдвиньте направо с левой стороны. это будет обрабатывать и делать для всего слайда вправо и скользить влево? – ted

 Смежные вопросы

  • Нет связанных вопросов^_^