gpt4 book ai didi

android - 如何调用 Timer 作为方法?

转载 作者:行者123 更新时间:2023-11-30 03:10:41 24 4
gpt4 key购买 nike

这是我的代码:

package com.example.wackamole;

import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends Activity {

static int scoreCount;
static Timer t;
static int count;
static int timeInterval;

protected TextView textView, counter;
protected ImageButton button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

t = new Timer();

scoreCount = 0;
count = 0;
timeInterval = 1000;

button = (ImageButton)findViewById(R.id.mole);
button.setBackgroundDrawable(null);
textView = (TextView)findViewById(R.id.score);

t.scheduleAtFixedRate(new TimerTask(){

@Override
public void run() {
runOnUiThread(new Runnable() {

@Override
public void run() {
if (count%2 == 0)
button.setImageResource(R.drawable.mole);
else
button.setImageResource(R.drawable.hole);

count++;
textView.setText("Score:" + count);


}

});

}
},0, timeInterval);

findViewById(R.id.mole).setOnClickListener(new View.OnClickListener() {
public void onClick (View v){


if (timeInterval > 100)
timeInterval -= 50;


if (t != null){
t.cancel();
t.purge();
t = null;
}
}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

我希望在点击按钮时能够停止计时器,然后再次重新启动计时器(这次,计时器间隔更小所以会更快)。是不是类似于 onCreate()?或继续?如果是这样,有人可以向我解释一下吗?

最佳答案

如果我没理解错的话,您正在尝试创建一个计时器,该计时器将在按下按钮时取消并重置。如果是这样,我认为这应该适合您。

在 onCreate 之外,您可以创建一个方法来处理计时器的取消和创建:

private void setupTimer() {
t.cancel();
t.schedule(new TimerTask() {

@Override
public void run() {
runOnUiThread(new Runnable() {

@Override
public void run() {
if (count % 2 == 0)
button.setImageResource(R.drawable.mole);
else
button.setImageResource(R.drawable.hole);

count++;
textView.setText("Score:" + count);
}
});
}
}, timeInterval);
}

Timer.schedule() 似乎符合您的需要。您可以在以下位置阅读有关 Timer 提供的不同方法的更多信息:http://developer.android.com/reference/java/util/Timer.html

Timer.scheduleAtFixedRate() 在给定的时间间隔连续触发。间隔的速率是固定的,不适合您减少每次按下按钮的计时器间隔的需要。

现在在您的 onCreate 中,您可以在用户点击您的按钮时调用这个新方法:

    findViewById(R.id.mole).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {

if (timeInterval > 100)
timeInterval -= 50;

setupTimer();
}
});

小号

关于android - 如何调用 Timer 作为方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033019/

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