如何设置图像矩阵的位置?

时间:2013-04-05 21:13:10

标签: android matrix touch android-imageview

我有GridView图片。长按一下,屏幕变暗(黑色半透明图像可见),另一个图像变得可见,具有从网格中长按的图像资源。

我想要的是能够拖动该图像(我已经成功),但图像显示在顶角(因为我设计了XML中的布局),我希望它显示在我点击的位置(为了精确,我希望可拖动图片的中心位于我点燃长按的位置。)

我的图片在fill_parent上为FrameLayout,并按矩阵比例设置以控制位置......

这是XML的图像部分:

<ImageView
    android:id="@+id/imgMainSelectedMovie"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scaleType="matrix"
    android:visibility="invisible"
    android:src="@drawable/escape" />

这是OnTouch()部分:

public boolean onTouch(View v, MotionEvent ev) {
        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            X = ev.getX();
            Y = ev.getY();
            if (longClicked) return true;
            break;
        case MotionEvent.ACTION_MOVE:
            if (longClicked) {
                if (!dragStarted) {
                    dragStarted = true;
                    myImageView.setX(X);
                    myImageView.setY(Y);
                }
            matrix.postTranslate((ev.getX() - X), (ev.getY() - Y));
            X = ev.getX();
            Y = ev.getY();
            myImageView.setImageMatrix(matrix);
            return true;
            }
            break;
        case MotionEvent.ACTION_UP:
            if (longClicked) {
            dark.setVisibility(View.INVISIBLE);
            myImageView.setVisibility(View.INVISIBLE);
            longClicked = false;
            return true;
            }

        }
        return false;
    }

这是我试图解决问题的方法:

if (!dragStarted) {
        dragStarted = true; //Changed to true when OnItemLongClick called
        myImageView.setX(X);
        myImageView.setY(Y);
            }

但它只会将图像布局的“起始点”更改为输入的X和Y.

1 个答案:

答案 0 :(得分:3)

问题解决了:) 我做的是onItemLongClick来电时我从ACTION_DOWN的{​​{1}}案例中测量了X和Y,取了矩阵当前位置,并从onTouch到坐标postTranslate减去图像的位置。 这是ACTION_DOWN

的解决方案部分
onItemLongCliick

我想知道为什么他们没有为矩阵提供某种“setPlace”方法......