2012-02-28 79 views
0

我知道动画效果以及如何将它们应用于onclicklistener,ontouchlistener等的视图(布局),但是当我将布局向左或向右滑动时会发生哪些事件。在布局中滑动动画:android

previousButton.setOnClickListener(new OnClickListener() { 
     @Override 
     publicvoid onClick(View v) { 
       viewFlipper.setInAnimation(MainActivity.this,R.anim.view_transition_in_right); 
       viewFlipper.setOutAnimation(MainActivity.this,R.anim.view_transition_out_right); 
       viewFlipper.showPrevious(); 
     } 
    }); 
} 

我不想onclicklistener。即)如果我触摸并向左滑动当前布局,它应该熄灭并且下一个布局应该在当前视图中。如何执行此操作?

回答

1

使您的活动实现onGestureListener。

然后在你的活动添加

private GestureDetector gestureScanner; 
gestureScanner = new GestureDetector(this); 
private static final int SWIPE_MIN_DISTANCE = 100; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 100; 

然后overrid的的onTouchEvent(MotionEvent事件),如下图所示:

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return gestureScanner.onTouchEvent(event); 
    } 

而且最后,您需要在此改变onFling方法是这样的:

@Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     /* on scroll to the next page */ 
     if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY 
       ) { 
      //Ur code goes here 
     } 
     /* on scroll to the previous page */ 
     else if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY 
       ) { 
      //ur code goes here. 
     } 
     return false; 
    } 

希望这有助于。

+0

这适用于我,但不完全。我当前的布局在页面中有大量的视图,当我在这些视图的顶部滑动时,它不起作用。唯一的时间刷卡正常工作是如果我沿着应用程序顶部的标题栏滑动。有没有办法让这个功能在整个屏幕上滑动? – JuiCe 2012-12-28 15:57:14

+0

我在这里找到了http://developer.android.com/training/gestures/viewgroup.html解决方案。如果您使用ViewGroup检测滑动,则可以实现onInterceptTouchEvent以获取所有动作事件,并选择它们是否必须由子视图处理,或者它们是否构成滑动手势。 – hara 2013-11-11 21:55:26

0

您需要查看传呼机 -

ViewPager

很容易实现过,你只需要提供以类似的方式的适配器,你会与一个ListView。