【问题标题】:Java how to increment an int 1 every second until it gets to 15Java如何每秒增加一个int 1直到它达到15
【发布时间】:2013-05-20 20:24:02
【问题描述】:

我想知道如何每秒将 1 加到我的 int 中,直到在这种情况下达到某个数字 15。

但我只想在按下按钮后开始增加 int。

        @Override
        public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {
            login.addAction(Actions.moveTo(0, 310, 1));

            loginClicked = true;

            if(loginClicked == true && loginTimer == 15){
                login.addAction(Actions.moveTo(0, 430, 1));
            }
        }
    });

有我的代码,你可以看到我正在移动一些东西,然后在 15 秒后如果它保持不变,我希望它也移动回来。

【问题讨论】:

标签: java android time int


【解决方案1】:

你可以使用定时器:

int delay = 5000; // delay for 5 sec.
int period = 1000; // repeat every sec.
int count = 0;
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask()
        {
            public void run()
            {
               // Your code

                count++;


            }
        }, delay, period);

【讨论】:

  • 为什么没有问题? count 应该是 final 吗?
【解决方案2】:
   Timer _t,timer;
   int _count=1;   
   TextView _tv 

初始化定时器

    _tv = (TextView) findViewById( R.id.textView1 );              

  _t = new Timer();
            _t.scheduleAtFixedRate( new TimerTask() {
            @Override
            public void run() {

                _count++;

                runOnUiThread(new Runnable() //run on ui threa
                 {
                  public void run() 
                  { 

                     if(_count<=15)
                     {
                      _tv.setText(""+_count);
                     }
                     else
                     {
                     _t.cancel();
                     }
                 }
                 });
            }
        }, 1000, 1000 ); 

您可以使用上述计时器。但我建议你使用处理程序

使用处理程序

      TextView _tv ;
      Handler m_handler;//= new Handler();
      Runnable m_handlerTask ;
     _tv = (TextView) findViewById( R.id.textView1 );
     m_handler = new Handler();
      m_handlerTask = new Runnable()
    {
         @Override 
         public void run() {
             if(_count<=15)
             {
              _tv.setText(""+_count);
              _count++;
             }
            else 
              {
                m_handler.removeCallbacks(m_handlerTask);
              }
              m_handler.postDelayed(m_handlerTask, 1000);
         }
    };
    m_handlerTask.run(); 

【讨论】:

    【解决方案3】:

    使用处理程序:

       Handler handler = new Handler();
    
    
        private int counter = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (++counter < 15) {
                        handler.postDelayed(this, 1000L);
                        return;
                    }
    
                    handler.removeCallbacks(this);
                }
            }, 1000L);
    
       }
    

    【讨论】:

      【解决方案4】:

      您也可以使用Countdown Timer,只需将ontick 放在int = bob++; 的元素处

      String convertbob = String.valueof(bob);
      TextViewName.setText(convertbob);
      

      还有你想在onFinish做的事情

      希望对大家有所帮助,欺骗倒计时的真正功能是明智的。

      【讨论】:

        猜你喜欢
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-02
        • 1970-01-01
        • 2022-06-28
        • 1970-01-01
        相关资源
        最近更新 更多