package com.lcj.test;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class TouchView extends View {
public TouchView(Context context) {
super(context);
}
public TouchView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TouchView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
boolean isInnerView = false;
float downX;
float downY;
float moveX;
float moveY;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downX = event.getRawX();
downY = event.getRawY();
Rect rect = new Rect();
int[] location = new int[2];
getLocationOnScreen(location);
rect.left = location[0];
rect.top = location[1];
rect.right = location[0] + this.getWidth();
rect.bottom = location[1] + this.getHeight();
if (rect.contains((int) event.getRawX(), (int) event.getRawY())) {
isInnerView = true;
}
break;
case MotionEvent.ACTION_MOVE:
moveX = event.getRawX();
moveY = event.getRawY();
float offsetX = moveX - downX;
float offsetY = moveY - downY;
if (isInnerView) {
this.setX(getX() + offsetX);
this.setY(getY() + offsetY);
}
downX = moveX;
downY = moveY;
break;
case MotionEvent.ACTION_UP:
isInnerView = false;
break;
default:
break;
}
return true;
}
}
Android View随手指移动
最新推荐文章于 2024-05-24 18:19:21 发布