2015-10-02 89 views
0

有誰知道,有沒有辦法在使用切換按鈕時避免點擊事件?我的意思是,我想在滑動手指時改變狀態。 在此先感謝如何避免切換按鈕中的點擊事件

+0

有一個方法從_an繼承droid.widget.CompoundButton_命名爲__performClick()__。你可以覆蓋這個函數,只是返回true,看看它是否有幫助。 –

回答

0

好吧好吧,在這種情況下,你可以View而不是Button並設置OnSwipeTouchListenerView

OnSwipeTouchListener.java

public class OnSwipeTouchListener implements OnTouchListener { 

     private final GestureDetector gestureDetector; 

     public OnSwipeTouchListener (Context ctx){ 
      gestureDetector = new GestureDetector(ctx, new GestureListener()); 
     } 

     private final class GestureListener extends SimpleOnGestureListener { 

      private static final int SWIPE_THRESHOLD = 100; 
      private static final int SWIPE_VELOCITY_THRESHOLD = 100; 

      @Override 
      public boolean onDown(MotionEvent e) { 
       return true; 
      } 

      @Override 
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
       boolean result = false; 
       try { 
        float diffY = e2.getY() - e1.getY(); 
        float diffX = e2.getX() - e1.getX(); 
        if (Math.abs(diffX) > Math.abs(diffY)) { 
         if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { 
          if (diffX > 0) { 
           onSwipeRight(); 
          } else { 
           onSwipeLeft(); 
          } 
         } 
         result = true; 
        } 
        else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { 
          if (diffY > 0) { 
           onSwipeBottom(); 
          } else { 
           onSwipeTop(); 
          } 
         } 
         result = true; 

       } catch (Exception exception) { 
        exception.printStackTrace(); 
       } 
       return result; 
      } 
     } 

     public void onSwipeRight() { 
     } 

     public void onSwipeLeft() { 
     } 

     public void onSwipeTop() { 
     } 

     public void onSwipeBottom() { 
     } 
    } 

而在你的活動

yourview.setOnTouchListener(new OnSwipeTouchListener() { 
    public void onSwipeTop() { 
     Toast.makeText(MyActivity.this, "top", Toast.LENGTH_SHORT).show(); 
    } 
    public void onSwipeRight() { 
     Toast.makeText(MyActivity.this, "right", Toast.LENGTH_SHORT).show(); 
    } 
    public void onSwipeLeft() { 
     //actions on slide/swipe 
    } 
    public void onSwipeBottom() { 
     Toast.makeText(MyActivity.this, "bottom", Toast.LENGTH_SHORT).show(); 
    } 

    public boolean onTouch(View v, MotionEvent event) { 
     return gestureDetector.onTouchEvent(event); 
    } 
}); 
+0

好的。非常感謝。 – pburgov