【问题标题】:How do i make an image to move when i touch it?当我触摸它时,如何使图像移动?
【发布时间】:2014-10-20 23:53:34
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    android:scaleType="matrix"
    

    接下来,在 Fragment 或 Activity 中添加一个 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 中移动图像了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多