2013-04-05 16 views
3

我有一个GridView与图像。长时间点击屏幕变暗(带有黑色半透明图像,可见),另一个图像变得可见,并且具有与网格长按的图像相同的资源。如何设置图像矩阵的位置?

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

我的形象是fill_parentFrameLayout和设置在矩阵规模控制位置...

这是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

是什么delMovie? – Elior 2013-04-05 21:22:18

+0

thats myImageView ... – 2013-04-05 22:08:09

回答

3

问题解决了:) 我所做的是,当onItemLongClick电话我把从测量的X和Y ACTION_DOWNonTouch的情况下,取矩阵当前位置,并从ACTION_DOWN减去图像的位置确定postTranslate。 这是解决方案的一部分从onItemLongCliick

matrix.getValues(values); 
matrixX = values[Matrix.MTRANS_X]; 
matrixY = values[Matrix.MTRANS_Y]; 
matrix.postTranslate(X-matrixX, Y-matrixY); 
myImageView.setImageMatrix(matrix); 

我不知道为什么他们没有把某种矩阵“setPlace”的方法...