Android 当我触摸图像时,如何使其移动?
我有一个比屏幕大的图像,如果我缩小它,它看起来会很可怕,所以我需要一种方法来移动图像,当我触摸它时,就像你用手在PS上移动图像一样。我知道我需要motionEvents和setOnTouchListener,但我不太确定下一步该怎么做才能有一个好的移动。是否需要移动图像边距并将其链接到X/Y运动事件 我已经检查了android关于motionEvents的解释,所以我已经知道当X/Y增加/减少时如何获取信息。该版面与其他内容是相对版面Android 当我触摸图像时,如何使其移动?,android,android-layout,android-animation,android-image,Android,Android Layout,Android Animation,Android Image,我有一个比屏幕大的图像,如果我缩小它,它看起来会很可怕,所以我需要一种方法来移动图像,当我触摸它时,就像你用手在PS上移动图像一样。我知道我需要motionEvents和setOnTouchListener,但我不太确定下一步该怎么做才能有一个好的移动。是否需要移动图像边距并将其链接到X/Y运动事件 我已经检查了android关于motionEvents的解释,所以我已经知道当X/Y增加/减少时如何获取信息。该版面与其他内容是相对版面 实现这一目标的最佳方式是什么?谢谢首先,在xml布局中更改I
实现这一目标的最佳方式是什么?谢谢首先,在xml布局中更改ImageView的scaletype:
android:scaleType="matrix"
接下来,在片段或活动中添加OnTouchListener:
imageView.setOnTouchListener(this);
private Matrix matrix = new Matrix();
private Matrix savedMatrix = new Matrix();
private PointF start = new PointF();
让您的片段或活动实现View.OnTouchListener并实现此方法:
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
matrix.set(savedMatrix);
float dx = event.getX() - start.x;
float dy = event.getY() - start.y;
matrix.postTranslate(dx, dy);
break;
}
imageView.setImageMatrix(matrix);
return true;
}
应在片段或活动中定义savedMatrix、matrix和start:
imageView.setOnTouchListener(this);
private Matrix matrix = new Matrix();
private Matrix savedMatrix = new Matrix();
private PointF start = new PointF();
现在可以在ImageView中移动图像