我在 Eclipse 中使用 android 开发人员工具,在 Java 中编程,只要按下一个按钮,我就需要让一个对象在屏幕上移动。我已经研究了几个小时,但我找不到任何方法来实现这一目标。我试过运行线程,这些线程经常崩溃或似乎不执行。我还尝试了一个 onClickListener
,它读取按钮状态并使用它来确定按钮是否仍被按下。我目前正在使用 while 循环,但这只会卡住程序。我相信这是最好的方法,并且我尝试使用 Thread.sleep 来限制每秒的迭代次数,因为我相信这就是它卡住的原因。我在正确的轨道上还是在左外野?这是一段代码:
rightButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
while(arg0.isPressed())
{
mover.updateCoordinates(1, 0);
}
}
});
最佳答案
你会尝试另一种方法吗?
首先将您的按钮声明为类变量,声明一个 Handler 和一个 Runnable:
private Button rightButton; // You will assign this in onCreate() method
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
if(rightButton.isPressed())
{
// If press state is pressed, move your item and recall the runnable in 100 milliseconds.
mover.updateCoordinates(1, 0);
mHandler.postDelayed(mRunnable, 100);
}
}
};
然后您的按钮的 onClickListener 将如下所示:
rightButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0)
{
// Instead of performing a loop here, just call a runnable, do simple press state checking there.
mHandler.postDelayed(mRunnable, 100);
}
});
关于java - 如何在按下按钮时使一段代码循环并在不再按下按钮后停止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16504213/