Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List view item swipe left and swipe right? [closed]

Can a List view item respond to swipe left and swipe right?

If so, how to apply android swipe left or right scrolling to open different intent? I want same like Call phone or message on contact view in android by default.

Thanks

like image 818
Amit Sharma Avatar asked Jul 08 '13 07:07

Amit Sharma


1 Answers

Try this:

navigaList.setOnTouchListener(swipeDetector); navigaList.setOnItemClickListener(listener);  OnItemClickListener listener = new OnItemClickListener() {     @Override     public void onItemClick(AdapterView<?> arg0, View arg1, int position,                             long arg3) {         if(swipeDetector.swipeDetected()) {             if(swipeDetector.getAction() == Action.RL) {              } else {              }         }             }; 

SwipeDetector.java

public class SwipeDetector implements View.OnTouchListener {      public static enum Action {         LR, // Left to Right         RL, // Right to Left         TB, // Top to bottom         BT, // Bottom to Top         None // when no action was detected     }      private static final String logTag = "SwipeDetector";     private static final int MIN_DISTANCE = 100;     private float downX, downY, upX, upY;     private Action mSwipeDetected = Action.None;      public boolean swipeDetected() {         return mSwipeDetected != Action.None;     }      public Action getAction() {         return mSwipeDetected;     }      public boolean onTouch(View v, MotionEvent event) {         switch (event.getAction()) {         case MotionEvent.ACTION_DOWN: {             downX = event.getX();             downY = event.getY();             mSwipeDetected = Action.None;             return false; // allow other events like Click to be processed         }         case MotionEvent.ACTION_MOVE: {             upX = event.getX();             upY = event.getY();              float deltaX = downX - upX;             float deltaY = downY - upY;              // horizontal swipe detection             if (Math.abs(deltaX) > MIN_DISTANCE) {                 // left or right                 if (deltaX < 0) {                     Logger.show(Log.INFO,logTag, "Swipe Left to Right");                     mSwipeDetected = Action.LR;                     return true;                 }                 if (deltaX > 0) {                     Logger.show(Log.INFO,logTag, "Swipe Right to Left");                     mSwipeDetected = Action.RL;                     return true;                 }             } else                   // vertical swipe detection                 if (Math.abs(deltaY) > MIN_DISTANCE) {                     // top or down                     if (deltaY < 0) {                         Logger.show(Log.INFO,logTag, "Swipe Top to Bottom");                         mSwipeDetected = Action.TB;                         return false;                     }                     if (deltaY > 0) {                         Logger.show(Log.INFO,logTag, "Swipe Bottom to Top");                         mSwipeDetected = Action.BT;                         return false;                     }                 }              return true;         }         }         return false;     } } 
like image 137
OMAK Avatar answered Sep 23 '22 08:09

OMAK