2016-06-13 65 views
0

我正在使用一個項目,我想通過在屏幕上滑動手指從一個活動跳到另一個活動。從左向右滑動意味着要進行下一個活動。從右向左滑動意味着要返回上一個活動活動。因爲我想重複使用這些功能,所以我不想每次重複整個代碼。使用手指輕掃從一個活動移動到下一個活動。 (Android項目)

我用Google搜索了一下,發現 move activity to another activity using Finger

但它似乎並沒有太大的幫助,因爲缺乏完善的ANS。

+2

你應該使用片段,片段ViewPager。 – SripadRaj

回答

1

而不是創建這麼多的活動,爲什麼你不考慮使用View Pager與片段尋呼機適配器。

您將擁有多個片段,這些片段將在右側滑動和左側滑動時可用。這將是非常有效的。你將能夠看到動畫。

但是在活動的情況下,您將不得不檢測滑動,然後啓動另一個活動。

此外,看一看下面的鏈接: 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); 
    } 
} 
相關問題