在布局中滑动动画:android
问题描述:
我知道动画效果以及如何将它们应用于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。即)如果我触摸并向左滑动当前布局,它应该熄灭并且下一个布局应该在当前视图中。如何执行此操作?
答
使您的活动实现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;
}
希望这有助于。
答
您应该使用Fragments在视图之间滑动。使用FragmentActivity和Fragment(对于每个视图)。 android developers example
或者你可以使用这个opensource library
这适用于我,但不完全。我当前的布局在页面中有大量的视图,当我在这些视图的顶部滑动时,它不起作用。唯一的时间刷卡正常工作是如果我沿着应用程序顶部的标题栏滑动。有没有办法让这个功能在整个屏幕上滑动? – JuiCe 2012-12-28 15:57:14
我在这里找到了http://developer.android.com/training/gestures/viewgroup.html解决方案。如果您使用ViewGroup检测滑动,则可以实现onInterceptTouchEvent以获取所有动作事件,并选择它们是否必须由子视图处理,或者它们是否构成滑动手势。 – hara 2013-11-11 21:55:26