2016-06-13 11 views
0

私は、画面上で指をスワイプすることで、あるアクティビティから別のアクティビティに移動したいプロジェクトに取り組んでいます。左から右へのスワイプは、次のアクティビティへの移動を意味します。右から左へのスワイプは、これらの機能を繰り返し使用したいので、毎回コード全体を繰り返す必要はありません。指のスワイプを使用して1つのアクティビティから次のアクティビティに移動します。 (Androidプロジェクト)

私はそれをGoogleで検索して move activity to another activity using Finger

は、しかし、それが原因で完璧ANSの不足のため、あまりにも便利思えなかったことを発見しました。

+2

あなたはViewPagerでフラグメントを使用する必要があります。 – SripadRaj

答えて

1

多くのアクティビティを作成する代わりに、View Pager with Fragment Pager Adapterを使用することを検討してください。

右スワイプと左スワイプで利用できる複数のフラグメントがあります。それは非常に効率的でもあります。あなたはアニメーションを見ることができます。

アクティビティの場合は、スワイプを検出して別のアクティビティを起動する必要があります。 How to implement a ViewPager with different Fragments/Layouts

0

あなたはOnTouchListenerを実装し、onCreate方法でそれを設定する必要があります。また

は、下のリンクを見てください。

view.setOnTouchListener(new MyOnTouchListener(this)); 

、ここのリスナーです:

public class MyOnTouchListener extends View.OnTouchListener { 
    final GestureDetector gesture; 

    public MyOnTouchListener(Activity activity) { 
     gesture = new GestureDetector(activity, new MyGestureListener()); 
    } 

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

public class MyGestureListener extends GestureDetector.SimpleOnGestureListener { 

    @Override 
    public boolean onDown(MotionEvent e) { 
     return true; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     final int SWIPE_MIN_DISTANCE = 120; 
     final int SWIPE_MAX_OFF_PATH = 250; 
     final int SWIPE_THRESHOLD_VELOCITY = 200; 

     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) { 
       return false; 
      } 

      if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       // TODO action for right to left swipe 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       // TODO action for left to right swipe 
      } 
     } catch (Exception e) { 
      // nothing 
     } 

     return super.onFling(e1, e2, velocityX, velocityY); 
    } 
} 
関連する問題