我有一个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。