【问题标题】:Set delay in android在android中设置延迟
【发布时间】:2013-04-30 13:16:04
【问题描述】:

我想在我的应用中显示 1 到 9 个数字作为计数器


TextView te=(TextView)findViewById(R.id.text); for(int i=0;i<10;i++ ){ try { te.setText("Number"+i); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }

但这并没有给我想要的 我该怎么做
谢谢

【问题讨论】:

  • 但这并不能满足我的需求。请告诉我你想要什么?
  • 为什么你不能使用倒计时来实现这一点
  • 我想在我的屏幕上显示数字1到10一个接一个

标签: android for-loop counter


【解决方案1】:

从不在 UI 线程上设置延迟。相反,使用Handler 及其postDelayed 方法定期执行操作。例如:

//define 'int i = 10;' at global level
final Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        te.setText("Number"+i);
        i--;
        handler.postDelayed(this, 1000);
    }
});

【讨论】:

    【解决方案2】:

    你可以试试类似这样的代码:

    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.app.Activity;
    import android.content.Intent;
    import android.content.pm.ActivityInfo;
    
    public class SplashScreen extends Activity {
    
        protected int _splashTime = 5000;
        private Thread splashTread;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_splash_screen);
    
            this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    
            splashTread = new Thread() {
                @Override
                public void run() {
                    try {
                        sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } finally {
                        startActivity(new Intent(SplashScreen.this,
                                Home.class));
                        finish();
                    }
                }
            };
            splashTread.start();
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event)
        {
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                synchronized(splashTread)
                {
                        splashTread.notifyAll();
                }
            }
            return true;
        }
    }
    

    进行必要的更改以使您的产品完美运行。 这只是一个例子。

    【讨论】:

      【解决方案3】:

      如果在显示计数器时没有预期用户交互,你所做的应该没问题,只要确保它们在 UI 线程上运行,这可以通过将其放入 runOnUiThread 或创建 Hander 来实现然后postMessage

      如果在计数器增加期间预期用户交互,您可以 创建一个Handler,然后调用postDelayed

      【讨论】:

        【解决方案4】:

        您可以直接使用 CountDownTimer。 此链接可能对您有所帮助 http://developer.android.com/reference/android/os/CountDownTimer.html

        可以在ontick方法中显示需要的值

        【讨论】:

          猜你喜欢
          • 2013-03-30
          • 2023-03-13
          • 1970-01-01
          • 2011-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多