我正在开发一个 android 应用程序。我的类扩展了 FragmentActivity,我在我的类中使用了一个 viewpager,它有一个 setonpagechangelistner 来检测从一个屏幕到另一个屏幕的滑动。
问题是,我无法检测到向左滑动和向右滑动手势。有没有办法检测到它?我试图在向右滑动时触发动画(即从 page0 到 page1)。
我两天以来一直在做这个。请帮忙。
谢谢!
我正在开发一个 android 应用程序。我的类扩展了 FragmentActivity,我在我的类中使用了一个 viewpager,它有一个 setonpagechangelistner 来检测从一个屏幕到另一个屏幕的滑动。
问题是,我无法检测到向左滑动和向右滑动手势。有没有办法检测到它?我试图在向右滑动时触发动画(即从 page0 到 page1)。
我两天以来一直在做这个。请帮忙。
谢谢!
我用这个答案解决了 我已附加到 viewpager.setOnTouchListener(gestureListener) ; 在我创建片段和查看器的活动中。基本上是这样的
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);
}
//.....
}
和 onFling 方法使用 viewPager.getCurrentItem() 检索当前页面并仅在第一个页面时执行特定操作。
希望能帮助到你。