0

I am developing an android app.My class extends FragmentActivity,and i am using a viewpager in my class which has a setonpagechangelistner to detect the swipe from one screen to another.

The problem is, i am not able to detect swipe left and swipe right gesture. Is there a way to detect it?I am trying to trigger an Animation on swipe right (i.e, from page0 to page1).

I am working on this since two days.please help.

Thanks!

DevAndro
  • 205
  • 1
  • 6
  • 18

1 Answers1

1

i solved with this answer Fling gesture detection on grid layout I've attached to viewpager.setOnTouchListener(gestureListener); in the activity where I create the fragment and the viewpager. Basically in this way

public class MainActivity extends FragmentActivity implements OnPageListener {

List<Fragment> fragments = new Vector<Fragment>();
private MyPageAdapter pageAdapter;
private ViewPager viewPager;

private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main_famiglia);

//......

// Gesture detection
    gestureDetector = new GestureDetector(this, new MyGestureDetector());
    gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    };


fragments.add(Fragment.instantiate(this,Page1Fragment.class.getName()));
    fragments.add(Fragment.instantiate(this,Page2Fragment.class.getName()));
    // creating adapter and linking to view pager
    this.pageAdapter = new MyPageAdapter(super.getSupportFragmentManager(),fragments);
    viewPager = (ViewPager) super.findViewById(R.id.viewpager);
    viewPager.setAdapter(this.pageAdapter);

    viewPager.setOnTouchListener(gestureListener);
}

//.....

}

and onFling method retrieve the current page with viewPager.getCurrentItem() and perform a specific action only if is the first one.

Hope it helps.

Community
  • 1
  • 1
Hw.Master
  • 4,412
  • 3
  • 18
  • 19