我正在使用一个小方块RelativeLayout
作为相邻GLSurfaceView
移动的游戏手柄。
我进行了设置,以便在onTouch
RelativeLayout
的{{1}}方法中调用onTouchListenner
内置的方法来更新平移和旋转坐标为了我的绘画。
除了触摸事件仅在用户将手指放在GLSurfaceView
上时触发事件外,我的一切工作正常。
我希望它感觉有点像操纵杆:如果你将手指按在RelativeLayout的顶部,那么你将继续“向上”(或以编程方式更多:RelativeLayout
和{最后发送的{1}}应该在event.getX()
中循环播放或重新发送,直到用户将其手指移到event.getY()
内,或者完全停止触摸GLSurfaceView
。 )
我应该使用什么来检测当前是否正在触摸RelativeLayout
(即使所述触摸中没有动作)?
谢谢!
答案 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
}
我的想法是你可能能够以这种方式开始或停止一个线程,但无论哪种方式,这至少可以为你提供有关用户何时按下并抬起他/她的手指的更多信息。