2013-04-05 21 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」的方法...