Android 当我触摸图像时,如何使其移动?

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

我有一个比屏幕大的图像,如果我缩小它,它看起来会很可怕,所以我需要一种方法来移动图像,当我触摸它时,就像你用手在PS上移动图像一样。我知道我需要motionEvents和setOnTouchListener,但我不太确定下一步该怎么做才能有一个好的移动。是否需要移动图像边距并将其链接到X/Y运动事件

我已经检查了android关于motionEvents的解释,所以我已经知道当X/Y增加/减少时如何获取信息。该版面与其他内容是相对版面


实现这一目标的最佳方式是什么?谢谢

首先,在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中移动图像