Listview Swipe inside viewflipper

I am trying to scroll left and right through the list and get viewflipper in swtich. Just like the remeberthemilk app and the default news and weather app on the main page ("News Scrolling"). Using various tutorials found by ive, I came across one stackoverflow that shows how to implement swipe gestures

    class MyGestureDetector extends SimpleOnGestureListener {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return true;
            // right to left swipe
            if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {


            }  else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                viewFlipper.setInAnimation(slideRightIn);
                viewFlipper.setOutAnimation(slideRightOut);
                viewFlipper.showPrevious();
            }
        } catch (Exception e) {
            // nothing
        }
        return true;
    }
}

And I got this job by doing

  lstView.setOnTouchListener(gestureListener);

However, sometimes it happens that the listview setOnItemClickListener will be triggered when a person scrolls. How to prevent this, and only run setOnItemClickListener when the user actually clicks on the list item, and not just on it.

Thank you, Faisal Abid

+3
3

, , , , , onItemClick,

@Override
 public boolean onSingleTapConfirmed(MotionEvent e) {

     // TODO Auto-generated method stub
     Log.e("Item Click", "Item Click");
     return super.onSingleTapConfirmed(e);

 }

SimpleOnGestureListener ,

+2

. .

onTouchListener ViewFlipper, .

public class ViewFlipperTouchListener implements OnTouchListener {
   ....
   ......
}


ViewFlipperTouchListener listener = new ViewFlipperTouchListener ();

mViewFlipper.setOnTouchListener(listener);



//now you have reference to listener. use it to send on touch event.


mListView.setOnTouchListener(new OnTouchListener(){

  @Override
  public boolean onTouch(View v, MotionEvent event){
     listener.onTouch(v, event);
 return false;
  }
});

i MotionEvent flipper onTouchListener, "". false, , ListView. / ( / /... .. ).

. : D

+1

, , , , . , ( , ):

@Override
public boolean onTouch(View view, MotionEvent event) {

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        {
            downXValue = event.getX();
            downTime = event.getEventTime();
            break;
        }

    case MotionEvent.ACTION_UP:
        {
            float currentX = event.getX();
            long currentTime = event.getEventTime();
            float difference = Math.abs(downXValue - currentX);
            long time = currentTime - downTime;

            Log.i("Touch Event:", "Distance: " + difference + "px Time: " + time + "ms");

            if ((downXValue < currentX) && (time > 50) && (difference > 50)) {
                showPrevious();
            }

            if ((downXValue > currentX) && (time > 50) && (difference > 50)) {
                showNext();
            }
            break;
        }
    }
}

, . , , , . if, .

0

Source: https://habr.com/ru/post/1747493/


All Articles