2016-06-13 68 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); 
    } 
} 
相关问题