gpt4 book ai didi

java - 一次或两次触摸屏幕时,我如何决定使用 Java 发送哪个参数?

转载 作者:行者123 更新时间:2023-11-29 05:02:26 26 4
gpt4 key购买 nike

我有一个 get 方法,我向服务器发送两个参数:

private byte[] Get(String urlIn)
{
URL url = null;
String urlStr="http://10.0.0.2:8098/?cmd=start&cmd=stop";
if (urlIn!=null)
urlStr=urlIn;

try
{
url = new URL(urlStr);
} catch (MalformedURLException e)
{
e.printStackTrace();
return null;
}
HttpURLConnection urlConnection = null;
try
{
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());

byte[] buf=new byte[10*1024];
int szRead = in.read(buf);

byte[] bufOut;



if (szRead==10*1024)
{
throw new AndroidRuntimeException("the returned data is bigger than 10*1024.. We don't handle it..");
}
else
{
bufOut = Arrays.copyOf(buf, szRead);
}
return bufOut;
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
finally
{
if (urlConnection!=null)
urlConnection.disconnect();
}
}

在 touchEvent 中我做了:

@Override
public boolean onTouchEvent(MotionEvent event)
{
float eventX = event.getX();
float eventY = event.getY();

float lastdownx = 0;
float lastdowny = 0;

switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
circlePath.addCircle(eventX, eventY, 50, Path.Direction.CW);
lastdownx = eventX;
lastdowny = eventY;

Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
byte[] response = Get(null);
if (response!=null)
{
String a = null;
try
{
a = new String(response,"UTF-8");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
Logger.getLogger("MainActivity(inside thread)").info(a);
}
}
});
t.start();

return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
// nothing to do
circlePath.reset();

break;
default:
return false;
}
invalidate();
return true;
}

发送两个参数工作正常,但现在我想更改它并使其在我触摸一次 Android 屏幕时发送第一个参数:开始。

如果我在它之后触摸屏幕两次(双击),它将发送第二个参数:停止。

  1. 我怎么知道我是触摸了屏幕一次还是两次?

  2. 我如何做到当我触摸一次它会发送开始参数而当触摸两次它会发送第二个参数停止?

  3. 如何让它知道我是每次触摸一次还是两次?就像我单击一次双击或单击两次然后发送正确的参数一样?

最佳答案

使用GestureDetector.OnDoubleTapListener

请参阅底部的设置

  1. onSingleTapConfirmed(..) 方法将在应用确定它不是双击(或三次或更多次)时触发。 onDoubleTap(..) 方法将在双击时触发。

2。对于单击:

@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// DO STUFF FOR SINGLE TOUCH

/*
This return statement says that this method was handled (true)
or
This return statement says that this method was not handled (false)
*/
return true;
}

对于双击:

@Override
public boolean onDoubleTap(MotionEvent e) {
// DO STUFF FOR DOUBLE TAP

//see above for notes on return statement
return true;
}
  1. 查看编号 (1)

设置:

  • 添加 实现 GestureDetector.OnGestureListener,
    GestureDetector.OnDoubleTapListener
    到您的类 header 。
  • 添加字段变量:private GestureDetector gestureDetector;
  • 将以下内容添加到您的 onCreate(..) 方法中:

    gestureDetector= new GestureDetectorCompat(this,this);
    gestureDetector.setOnDoubleTapListener(this);

  • 因为您正在使用接口(interface),所以您需要覆盖更多您可能会或可能不会使用的方法。放手去做。例如:

    @Override
    公共(public) boolean onDown(MotionEvent 事件){
    //不会使用它,但是没关系:/
    返回假;//所以它不消耗事件
    }

关于此的更多信息 here

关于java - 一次或两次触摸屏幕时,我如何决定使用 Java 发送哪个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31641917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com