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

时间:2014-10-20 23:53:35

标签: android android-layout android-animation android-image

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

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

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

1 个答案:

答案 0 :(得分:1)

首先,在xml布局中更改ImageView的scaletype:

android:scaleType="matrix"

接下来,在片段或活动中添加OnTouchListener:

imageView.setOnTouchListener(this);

让Fragment或Activity实现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应该在Fragment或Activity中定义:

private Matrix matrix = new Matrix();
private Matrix savedMatrix = new Matrix();
private PointF start = new PointF();

现在您可以在ImageView中移动图像。