ViewFlipper配合GestureDetector

本文介绍了一个基于触摸屏滑动事件的应用实例,通过解析MotionEvent来实现视图的翻页效果。具体包括如何捕捉用户的触摸行为并根据手指在X轴上的移动距离和速度触发页面切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   
 
主要代码:

 

			/**
			 * 用户按下触摸屏、快速移动后松开即触发这个事件 e1:第1个ACTION_DOWN MotionEvent e2:最后一个ACTION_MOVE
			 * MotionEvent: velocityX:X轴上的移动速度,像素/秒 velocityY:Y轴上的移动速度,像素/秒 触发条件 :
			 * X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
			 */
			@Override
			public boolean onFling(MotionEvent e1, MotionEvent e2,
					float velocityX, float velocityY) {
				if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {
					if (currentIndex < IMAGES.length - 1) {
						currentIndex++;
						View view = new View(Test.this);
						view.setBackgroundResource(IMAGES[currentIndex]);
						viewFlipper.addView(view);

						viewFlipper.setInAnimation(AnimationUtils
								.loadAnimation(Test.this, R.anim.push_left_in));
						viewFlipper
								.setOutAnimation(AnimationUtils.loadAnimation(
										Test.this, R.anim.push_left_out));

						viewFlipper.showNext();
					}
					generatePageControl();
					return true;
				} else if (e1.getX() - e2.getX() < -FLING_MIN_DISTANCE) {
					if (currentIndex > 0) {
						currentIndex--;
						viewFlipper
								.setInAnimation(AnimationUtils.loadAnimation(
										Test.this, R.anim.push_right_in));
						viewFlipper
								.setOutAnimation(AnimationUtils.loadAnimation(
										Test.this, R.anim.push_right_out));
						viewFlipper.showPrevious();
					}
					generatePageControl();
					return true;
				}
				return false;
			}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值