我有一个比屏幕更大的图像,如果我缩小它会显得太可怕,所以我需要一种方法来移动图像,当我触摸它时,就像你用手在PS上移动图像。我知道我需要motionEvents和setOnTouchListener,但我不太确定我接下来应该做些什么来做一个好运动。我是否需要移动图像边距并将它们链接到X / Y运动事件? :
我已经检查了关于motionEvents的android解释,所以我已经知道如何在X / Y增加/减少时获取信息。布局是相对布局及其他内容。
实现这一目标的最佳方法是什么?感谢
答案 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中移动图像。