0

私は Android アプリを開発しています。私のクラスは FragmentActivity を拡張しています。また、ある画面から別の画面へのスワイプを検出する setonpagechangelistner を持つクラスでビューページャーを使用しています。

問題は、左スワイプと右スワイプのジェスチャーを検出できないことです。それを検出する方法はありますか?右にスワイプすると (つまり、ページ 0 からページ 1 に) アニメーションをトリガーしようとしています。

私は2日以来これに取り組んでいます.助けてください.

ありがとう!

4

1 に答える 1

1

私はこの回答で解決しました グリッドレイアウトでのフリングジェスチャ検出 私は 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() を使用して現在のページを取得し、最初のページである場合にのみ特定のアクションを実行します。

それが役に立てば幸い。

于 2013-05-29T11:55:12.353 に答える