AutoResume CountDownTimer
我在我的应用程序中有一个CountDownTimer
。我正在为我的学校项目开发一款游戏。而我在如何自动恢复我的倒计时器方面遇到困难。AutoResume CountDownTimer
所以这是我多么希望我的countdowntimer做: 点击imageview的触发countdowntimer开始(工作)>单击imageview的停止/暂停countdowntimer> autoresume countdowntimer 10秒后(我的大问题T_T)。
我需要一个autoresume,因为我正在开发一款游戏,那么,通常这是一款游戏提供的功能,我认为呢?在我使用的代码上,点击暂停图像查看后,计时器暂停。但是当我再次点击触发开始的图像按钮时,它会回到59,而不是当我点击暂停时的时间。
基本上,这是我的第一个应用程序。我现在正在使用Android Studio(我之前使用Eclipse Juno)。我非常需要这些帮助。 TIA :)
public class TimeAttack extends Activity { \t TextView timer;
\t
\t private CountDownTimer countDownTimer;
\t private boolean timeHasStarted = false;
\t @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.time_attack);
\t \t timer = (TextView) this.findViewById(R.id.timer);
\t \t timer.setText("00:01:00");
\t \t countDownTimer = new MyCountDownTimer(60000,1000);
\t \t
\t \t \t \t
\t \t blizzard.setOnClickListener(new View.OnClickListener() {
\t \t \t
\t \t \t @Override
\t \t \t public void onClick(View v) {
\t \t \t \t
\t \t \t // \t this button should pause the time, and its working YAY!
\t \t \t \t countDownTimer.cancel();
\t \t \t \t \t timeHasStarted = false; \t
\t \t \t \t
\t \t \t }
\t \t });
\t
\t \t //CustomClickListener
\t \t OnClickListener myCommoClickListner = new OnClickListener(){
\t \t \t @Override
\t \t \t public void onClick(View arg0) {
//if an imagebutton is clicked, it will trigger the countdowntimer to start its countdown
\t \t \t \t \t if (!timeHasStarted) {
\t \t \t \t countDownTimer.start();
\t \t \t \t timeHasStarted = true;
\t \t \t \t \t }
}
//COUNTDOWNTIMER
@TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") public class MyCountDownTimer extends CountDownTimer{
\t \t public MyCountDownTimer(long millisInFuture, long countDownInterval){
\t \t \t super(millisInFuture, countDownInterval);
\t \t }
\t \t @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") @Override
\t \t public void onTick(long millisUntilFinished) {
\t \t \t // TODO Auto-generated method stub
\t \t \t long millis = millisUntilFinished;
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.println(hms);
timer.setText(hms);
\t \t \t
\t \t }
\t \t @Override
\t \t public void onFinish() {
\t \t \t // TODO Auto-generated method stub
\t \t \t timer.setText("Time's Up!");
\t \t }
回答:
有不同的方法来做到这一点。
- 您可以在UI线程中使用计时器本身。
你可以在单独的线程中使用定时器(这是一个很好的做法)。它的东西就像。
线程定时器=新的Thread(){ 公共无效的run(){ 尝试 { 睡眠(10000); (InterruptedException e) { e.printStackTrace(); (!timeHasStarted){ countDownTimer.start(); timeHasStarted = true; } } }; timer.start();
使用Handler来完成这项工作。代码如下
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo/company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
if (!timeHasStarted) {
countDownTimer.start();
timeHasStarted = true;
}
}, 10000); //10 seconds
很抱歉的格式,但我认为你可以管理。
以上是 AutoResume CountDownTimer 的全部内容, 来源链接: utcz.com/qa/259833.html