控件跟随手指移动(心得)

Posted 凤雏小呆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控件跟随手指移动(心得)相关的知识,希望对你有一定的参考价值。

        /**
	 * 初始坐标
	 * 
	 * 都是相对于控件本身的坐标
	 * 
	 * x y 手指按下的坐标
	 */
	private float x = 0, y = 0;

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// 手指按下的坐标
		float downX = 0, downY = 0;
		// 移动后的坐标 改变的值
		float moveX = 0, moveY = 0, changeX = 0, changeY = 0;
		switch (event.getAction() & MotionEvent.ACTION_MASK) {
		case MotionEvent.ACTION_DOWN:
			downX = event.getX();
			downY = event.getY();
			x = event.getX();
			y = event.getY();
			break;
		case MotionEvent.ACTION_MOVE:
			moveX = event.getX();
			moveY = event.getY();
			changeX = moveX - downX;
			changeY = moveY - downY;
			//this.getX()  this.getY() 是在父控件的坐标
			float currentX = this.getX() + changeX - x;
			float currentY = this.getY() + changeY - y;
			this.setX(currentX);
			this.setY(currentY);
			// 将移动后的坐标置为按下的位置
			downX = moveX;
			downY = moveY;
			break;
		}
		return true;
	}    

  

以上是关于控件跟随手指移动(心得)的主要内容,如果未能解决你的问题,请参考以下文章

一个跟随手指移动的 View 产生的抖动问题

1 跟随手指移动的球

一个可以跟随手指移动的PopupWindow

用户如何在触摸时也能画出线条跟随手指?Android 开发

Android 中 View移动总结:ViewDragHelper学习及用法详解

Android中的自定义控件