2012-05-18 109 views
0

我想在我的活动中设置图像按钮(pushClick),以启用用于旋转针图形的onTouchEvents。不幸的是,无论我是否点击图像按钮,onTouchEvent都处于活动状态。我怎样才能防止onTouchEvent发射,直到点击图像按钮后?开始onTouchEvent之后onClick事件

public void pushClick(View pushClick) { 
    switch (pushClick.getId()) { 
    case R.id.btn_push: 

     make(degrees); 

    } 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     startRotating(); 
     break; 
    case MotionEvent.ACTION_UP: 
     stopRotating(); 
     break; 
    } 

    return super.onTouchEvent(event); 
} 

private void startRotating() { 
    returnRotating = false; 

    if (!keepRotating) { 
     keepRotating = true; 

     final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       if (keepRotating) { 
        degrees = (degrees + 1) % 360; 
        make(degrees); 

        handler.postDelayed(this, INTERVAL); 
       } 
      } 
     }, INTERVAL); 
    } 
} 

private void stopRotating() { 
    keepRotating = false; 

    if (!returnRotating) { 
     returnRotating = true; 

     final Handler handler = new Handler(); 

     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       if (returnRotating) { 
        degrees = (degrees - 1) % 360; 
        make(degrees); 

        handler.postDelayed(this, INTERVAL); 
       } 
      } 
     }, INTERVAL); 
    } 
} 

回答

1

我敢打赌,有一个更好的方式来做到这一点,但在这里把我的头顶部:

private boolean buttonClicked = false; 

public void pushClick(View pushClick) { 
    switch (pushClick.getId()) { 
    case R.id.btn_push: 
     buttonClicked = true; 
     make(degrees); 

    } 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if(buttonClicked) 
    { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      startRotating(); 
      break; 
     case MotionEvent.ACTION_UP: 
      stopRotating(); 
      break; 
     } 
    } 

    return super.onTouchEvent(event); 
} 
+0

这实际上就像一个魅力!我试图找出如何使用int将on()添加到onTouchEvent,但是有很多语法问题。万分感谢! – n00bdev

0

您还可以添加OnTouchListener(无论从任何浏览你想要它附着到)当你的图像按钮被按下,并再次点击时将其删除(如果这是你想要的)。

+0

我曾尝试将onTouchListener作为布尔值移动到图像按钮部分,但运行时会关闭,因此我将其支持以支持更简单的方法。 – n00bdev