gpt4 book ai didi

Android - OnTouch 工作

转载 作者:搜寻专家 更新时间:2023-11-01 08:15:07 25 4
gpt4 key购买 nike

我有一些代码让我非常接近我想要实现的目标。但是有几个问题。我想做的是,当一个Button被按住时,它会不断调用一个方法AdvanceLog()。问题是,ACTION_DOWN 运动事件不会继续被调用。发生的情况是,当您按住时,第一个 Action 是 ACTION_DOWN,此后仍然按住的每个 Action 都是 ACTION_MOVE。这导致了一些问题,因为我并不是真的在寻找移动 Action ,更多的只是重复向下 Action 。有什么建议吗?

advanceButton.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event)
{
int counter=0;
if(event.getAction()==MotionEvent.ACTION_DOWN || event.getAction()==MotionEvent.ACTION_MOVE)
{
fwdTouchCounter++;
AdvanceLog(true, true);
try
{
if(fwdTouchCounter>5)
Thread.sleep(30);
else
Thread.sleep(800);
}
catch (InterruptedException e)
{

e.printStackTrace();
}
}
else if(event.getAction()==MotionEvent.ACTION_UP)
fwdTouchCounter=0;

return false;

}
});

最佳答案

在您的ACTION_DOWN 触摸事件中,触发调用本地方法的线程。在这个方法中不断读取一个类变量(boolean 是最简单的),如果那个变量,我们称之为 m_advanceLog 是真的,继续处理(我猜是推进你的日志).在您的 ACTION_UP 触摸事件中,将 m_advanceLog 设置为 false,这将停止您的循环并允许线程退出。

请记住,只有在用户界面没有变化的情况下,这才是一个好主意,否则由于线程交互,需要做一些额外的工作。

关于Android - OnTouch 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453158/

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