我有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.
答案 0 :(得分:3)
问题解决了:)
我做的是onItemLongClick
来电时我从ACTION_DOWN
的{{1}}案例中测量了X和Y,取了矩阵当前位置,并从onTouch
到坐标postTranslate
减去图像的位置。
这是ACTION_DOWN
:
onItemLongCliick
我想知道为什么他们没有为矩阵提供某种“setPlace”方法......