2017-07-19 175 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的帮助,非常感谢! –