【问题标题】:how to detect swipe direction android fragmentactivity如何检测滑动方向android fragmentactivity
【发布时间】:2013-05-29 08:42:20
【问题描述】:

我正在开发一个 android 应用程序。我的课程扩展了 FragmentActivity,我在我的课程中使用了一个 viewpager,它有一个 setonpagechangelistner 来检测从一个屏幕到另一个屏幕的滑动。

问题是,我无法检测到向左滑动和向右滑动手势。有没有办法检测到它?我试图在向右滑动时触发动画(即从 page0 到 page1)。

这两天我一直在做这件事。请帮忙。

谢谢!

【问题讨论】:

  • 你想知道用户是否滑动到上一页和下一页吗?还是只是在朝着某个方向发展?
  • 方向,由用户向左滑动或向右滑动。
  • 你有多少页,告诉我你当前的页码。
  • 我有 11 页。它从第 0 页到第 11 页开始。

标签: android android-viewpager swipe


【解决方案1】:

我用这个答案解决了Fling gesture detection on grid layout 我已附加到 viewpager.setOnTouchListener(gestureListener);在我创建片段和 viewpager 的活动中。 基本上是这样的

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() 检索当前页面并仅在第一个时执行特定操作。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2017-10-18
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多