只要视图被按下,你如何让onTouchListener继续前进?

时间:2013-12-18 03:25:07

标签: android android-layout android-activity android-view

我正在使用一个小方块RelativeLayout作为相邻GLSurfaceView移动的游戏手柄。

我进行了设置,以便在onTouch RelativeLayout的{​​{1}}方法中调用onTouchListenner内置的方法来更新平移和旋转坐标为了我的绘画。

除了触摸事件仅在用户将手指放在GLSurfaceView上时触发事件外,我的一切工作正常。

我希望它感觉有点像操纵杆:如果你将手指按在RelativeLayout的顶部,那么你将继续“向上”(或以编程方式更多:RelativeLayout和{最后发送的{1}}应该在event.getX()中循环播放或重新发送,直到用户将其手指移到event.getY()内,或者完全停止触摸GLSurfaceView。 )

我应该使用什么来检测当前是否正在触摸RelativeLayout(即使所述触摸中没有动作)?

谢谢!

3 个答案:

答案 0 :(得分:1)

所以这就是我与csmcklvey同时出现的内容

            if(event.getAction()==MotionEvent.ACTION_UP)
                gM.isTouchedL = false;
            else
                gM.isTouchedL = true;
            return true;

其中.isTouchedL是我在GLSurfaceView中使用的“控制布尔”

Green点燃了csmc的答案! :)

答案 1 :(得分:1)

我在我的一个应用程序中使用了旋转动画,该应用程序正在使用onTouchEven视图。主要功能已在事件“ACTION_MOVE”中执行。它会帮助你,通过。

public boolean onTouch(View v, MotionEvent event) 
{

  final float xc = volumeButton.getWidth() / 2;
  final float yc = volumeButton.getHeight() / 2;
  final float x = event.getX();
  final float y = event.getY();
  switch (event.getAction()) 
  {
     case MotionEvent.ACTION_DOWN:
     {
//      volumeButton.clearAnimation();
//      mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y));
        break;
     }
     case MotionEvent.ACTION_MOVE: 
     {
        mPrevAngle = mCurrAngle;
        mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y));
        animate(mPrevAngle, mCurrAngle, 100);
        break;
     }
     case MotionEvent.ACTION_UP :
     {
        mPrevAngle = mCurrAngle = 0;
        break;
     }
  }
  return true;

}

答案 2 :(得分:0)

您可以使用onTouch()方法的MotionEvent参数的event.getAction()方法。您可以检查它是否是MotionEvent.ACTION_DOWN或MotionEvent.ACTION_UP。

if (event.getAction() == MotionEvent.ACTION_DOWN) {
    //start something
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
    //stop something
}

我的想法是你可能能够以这种方式开始或停止一个线程,但无论哪种方式,这至少可以为你提供有关用户何时按下并抬起他/她的手指的更多信息。