Android:自定义视图的onTouchListener实现
我创建了带有一些特性的自定义ImageView,我的问题是实现上的问题。现在,视图具有拖动和缩放功能。 下面是一个例子:Android:自定义视图的onTouchListener实现,android,canvas,view,imageview,ontouchlistener,Android,Canvas,View,Imageview,Ontouchlistener,我创建了带有一些特性的自定义ImageView,我的问题是实现上的问题。现在,视图具有拖动和缩放功能。 下面是一个例子: @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: savedMatrix.set(m
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
mode = DRAG;
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
}
break;
case MotionEvent.ACTION_UP:
float[] values = new float[9];
matrix.getValues(values);
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate((event.getX() - start.x),
(event.getY() - start.y));
} else if (mode == ZOOM) {
float newDist = spacing(event);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldDist;
//SOME CODE
}
}
break;
}
invalidate();
return true;
}
我想检测监听器中的fling,并在fling之后平滑地转换矩阵。如果能为我的任务提供有效的解决方案,我将不胜感激。您可以使用手势检测器
class MyGestureListener implements GestureDetector.OnGestureListener {
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
if (event1.getY() - event2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
return true;
} else if (event2.getY() - event1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
return true;
}
return true;
}
@Override
public boolean onDown(MotionEvent event) {
return true;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
}
}
你的onTouch方法
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return new GestureDetectorCompat(getActivity(), new MyGestureListener()).onTouchEvent(motionEvent);
}
好的,但我必须如何设置在onFling方法中查看的X,Y坐标?event1.getY和event2.getY将为您提供X和Y坐标否,我的意思是在我们投掷图像后图像的平滑运动。我的任务是像android gallery一样创建图像视图。我想你可以添加动画来移动。