2017-07-19 50 views
0

Image showing intended result的Android停止拖出屏幕從View

的中心點有沒有辦法阻止拖過使用onTouch移動事件屏幕視圖的中心點?

我可以檢測點,但我需要的邏輯停止視圖移動,然後重新接合的拖動,當用戶向後划動。設置一個布爾值將禁用移動事件這是沒有好,並設置視圖返回到一個已知的好點的跳動。

有這個任何地方沒有答案,所以我不知道,如果它甚至有可能...

回答

0

您可以使用此做出限制在屏幕邊界的視圖。

int width=v.getLayoutParams().width;; 
    int height=v.getLayoutParams().height; 
    switch (event.getAction()) { 

     case MotionEvent.ACTION_DOWN: 

      dX = v.getX() - event.getRawX(); 
      dY = v.getY() - event.getRawY(); 

      return true; 

     case MotionEvent.ACTION_MOVE: 

      if (width == windowWidth && height == windowHeight){} 
      else { 
       v.animate() 
         .x(event.getRawX() + dX) 
         .y(event.getRawY() + dY) 
         .setDuration(0) 
         .start(); 

       if (event.getRawX() + dX + width > windowWidth) { 
        v.animate() 
          .x(windowWidth - width) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawX() + dX < 0) { 
        v.animate() 
          .x(0) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawY() + dY + height > windowHeight) { 
        v.animate() 
          .y(windowHeight - height) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawY() + dY < 0) { 
        v.animate() 
          .y(0) 
          .setDuration(0) 
          .start(); 
       } 

       return true; 
      } 

其中v是在onTouchListener

+0

認爲這是一半的時候有我的代碼來實現,不過鑑於只有向下移動,右。我需要它移動頂部和左邊,任何想法如何適應這個或我要去哪裏錯了? –

+0

請上傳過來的完整代碼,您使用的是移動,因爲這個代碼是爲我工作完美。 – Anmol

+0

好吧,你是正確的代碼是好的。我創建了一個自定義視圖,它可以設置幾個維度,並在創建時移動佈局。這就是爲什麼什麼也沒有爲我工作好,大量的試驗和錯誤上移動的利潤率,我終於得到了在那裏我需要的不過之後。感謝Anmol的幫助,非常感謝! –