实现滑动的几种简单方法

<span style="font-family:Comic Sans MS;font-size:14px;">public boolean onTouchEvent(MotionEvent event) {
		float x = event.getX();
		float y = event.getY();
		// float x = event.getRawX();
		// float y = event.getRawY();
		switch (event.getAction()) {

		case MotionEvent.ACTION_DOWN:
			mLastX = x;
			mLastY = y;

			break;

		case MotionEvent.ACTION_MOVE:
			int offsetX = (int) (x - mLastX);
			int offsetY = (int) (y - mLastY);
			<span style="color:#ff0000;">// 使用layout进行位移</span>
			// layout(getLeft() + offsetX, getTop() + offsetY, getRight()
			// + offsetX, getBottom() + offsetY);

			<span style="color:#ff0000;">// 使用offsetLeftAndRight、offsetTopAndBottom</span>
			// offsetLeftAndRight(offsetX);
			// offsetTopAndBottom(offsetY);

			<span style="color:#ff0000;">// 使用MarginLayoutParams</span>
			// marginLayoutParams = (MarginLayoutParams) getLayoutParams();
			// marginLayoutParams.setMargins(getLeft() + offsetX, getTop()
			// + offsetY, 0, 0);
			// setLayoutParams(marginLayoutParams);

			<span style="color:#cc0000;">// 使用scroll,参数为正向上滑</span>
			((View) getParent()).scrollBy(-offsetX, -offsetY);

			// 使用绝对坐标一定要重新设置初始坐标
			// mLastX = x;
			// mLastY = y;
			break;
		case MotionEvent.ACTION_UP:
			<span style="color:#ff0000;">// 使用scroller</span>
			View viewParent = ((View) getParent());
			//不知道为什么滑出屏幕后不会滑回来
			mScroller.startScroll(viewParent.getScrollX(),
					viewParent.getScrollY(), -viewParent.getScrollX(),
					-viewParent.getScrollY());
			viewParent.invalidate();
			break;
		}
		return true;
	}

	@Override
	public void computeScroll() {
		super.computeScroll();
		if (mScroller.computeScrollOffset()) {
			((View) getParent()).scrollTo(mScroller.getCurrX(),
					mScroller.getCurrY());
			invalidate();
		}
	}</span>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值