Android 单击按钮后,我如何等待一段时间?
因此,我有一个活动,运行一个简单的蛇和梯子游戏,我想让玩家点击一个按钮并移动,随后电脑会移动。我的问题是,一旦玩家移动,计算机就会立即移动 相反,我希望活动在计算机移动之前等待。我环顾了很多地方,发现等待涉及到使用线程,但我没有在应用程序崩溃的情况下实现它 我声明线程的尝试:Android 单击按钮后,我如何等待一段时间?,android,wait,runnable,Android,Wait,Runnable,因此,我有一个活动,运行一个简单的蛇和梯子游戏,我想让玩家点击一个按钮并移动,随后电脑会移动。我的问题是,一旦玩家移动,计算机就会立即移动 相反,我希望活动在计算机移动之前等待。我环顾了很多地方,发现等待涉及到使用线程,但我没有在应用程序崩溃的情况下实现它 我声明线程的尝试: final Runnable runnable = new Runnable() { @Override public void run() { w
final Runnable runnable = new Runnable() {
@Override
public void run()
{
while (true)
{
try
{
Thread.sleep(5000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
};
Thread thread= new Thread(runnable);
按钮的My onClick()方法:
Button rollButton = (Button) (findViewById(R.id.rollButton));
rollButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//executes only if current player is a human
if(GAME_BOARD.getCurrentPlayer().isHuman()) {
GAME_BOARD.rollDie(); // rolls the die
showDie(GAME_BOARD); // displays die on screen
GAME_BOARD.move(); // moves the player and sets next player as current player
playerTurn.setText(GAME_BOARD.getCurrentPlayer().getName() +"'s turn");// sets TextView to display who's player's turn it is
thread.start();
if(!GAME_BOARD.getCurrentPlayer().isHuman()) {
GAME_BOARD.rollDie();
showDie(GAME_BOARD);
GAME_BOARD.move();
playerTurn.setText(GAME_BOARD.getCurrentPlayer().getName() +"'s turn");
}
}
}
});
同样,我的问题是,如何使活动在执行第二个if语句之前等待,比如说4秒?使用倒计时:
CountDownTimer timer = new CountDownTimer(4000, 1000) {
@Override
public void onFinish() {
*function containing the second statement*
}
@Override
public void onTick(long millisLeft) {
// not ticking
}
};
在单击侦听器的onClick方法中使用:
timer.start();
使用倒计时:
CountDownTimer timer = new CountDownTimer(4000, 1000) {
@Override
public void onFinish() {
*function containing the second statement*
}
@Override
public void onTick(long millisLeft) {
// not ticking
}
};
在单击侦听器的onClick方法中使用:
timer.start();
您可以使用
处理程序。postDeleayed
。您必须提供一个可运行到execut的值和延迟时间(以毫秒为单位)。Runnable
将在UI线程上执行您可以使用处理程序。postDeleayed
。您必须提供一个可运行到execut的值和延迟时间(以毫秒为单位)。Runnable
将在UI线程上执行
rollButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Runnable runnable = new Runnable() {
@Override
public void run() {
// whatever you would like to implement when or after clicking rollButton
}
};
rollButton.postDelayed(runnable, 5000); //Delay for 5 seconds to show the result
}
试试下面的方法
rollButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Runnable runnable = new Runnable() {
@Override
public void run() {
// whatever you would like to implement when or after clicking rollButton
}
};
rollButton.postDelayed(runnable, 5000); //Delay for 5 seconds to show the result
}
延迟一段时间后,您可以使用Handle发布在runnable中定义的任务 使用这个
内部活动定义
Handler hand = new Handler();
并在runnable中定义任务,如下所示
Runnable run = new Runnable() {
@Override
public void run() {
**your Task here.......**
}
};
在点击事件中
btnStartShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
hand.postDelayed(run,3000); // For delay three seconds
}
});
在适当的地方调用下面的句子,也可以删除所有挂起的消息
hand.removeCallbacksAndMessages(null);
延迟一段时间后,您可以使用Handle发布在runnable中定义的任务 使用这个
内部活动定义
Handler hand = new Handler();
并在runnable中定义任务,如下所示
Runnable run = new Runnable() {
@Override
public void run() {
**your Task here.......**
}
};
在点击事件中
btnStartShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
hand.postDelayed(run,3000); // For delay three seconds
}
});
在适当的地方调用下面的句子,也可以删除所有挂起的消息
hand.removeCallbacksAndMessages(null);
可能的重复可能的重复