如何显示一个图像五秒钟然后显示另一个(Android Studio)

问题描述:

我有我的Java代码,我有这种布局,其中有一个ImageView和一个Button,在我的Drawable文件夹中我必须有图像,想要的是:点击Button advance时,ImageView将显示图像(位于drawable文件夹中的image1.png),并在5秒后显示其他图像(image2.png)。问题是我不知道该如何停下来。如何显示一个图像五秒钟然后显示另一个(Android Studio)

advance.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       image.setImageResource(R.drawable.image1); 
        //TO WAIT 5 SCONDS... 
       image.setImageResource(R.drawable.image2); 
      } 
     }); 

使用默认CountDownTimer http://developer.android.com/reference/android/os/CountDownTimer.html

  1. 设置第一个图像
  2. 启动CountDownTimer

设置新的图像onFinish()

new CountDownTimer(5000, 1000) { // 5000 = 5 sec 

    public void onTick(long millisUntilFinished) { 
    } 

    public void onFinish() { 
     image.setImageResource(R.drawable.image2); 
    } 
}.start(); 

编辑:

额外的信息:在文档中,你可以找到

CountDownTimer(长millisInFuture,长countDownInterval)

所以第一个参数是你想拥有的总时间(以毫秒,5秒= 5000 milis),第二个参数是间隔。这里是1000 = 1秒。这意味着计时器将每秒钟打勾。所以onTick(长)将被称为每秒(定时器运行时)

+0

它的工作,谢谢...我只是想知道'1000'的作用。 – 2014-09-01 14:26:26

+0

请参阅编辑。解释你需要了解的内容。 – 2014-09-01 14:35:48

+0

如何使它适用于2个以上的图像?我也不想对资源进行硬编码,因为变量在新对象内不可访问。 – aks 2016-03-29 12:06:42

你也可以使用一个TimerTimerTask

advance.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       image.setImageResource(R.drawable.image1); 
       Timer t = new Timer(); 
       t.schedule(new TimerTask() { 
        @Override 
        public void run() { 
          image.setImageResource(R.drawable.image2); 
        } 
       }, 5000); 
      } 
     }); 

你也可以使用一个处理程序:http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable,长)

advance.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        image.setImageResource(R.drawable.image1); 

        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         image.setImageResource(R.drawable.image2); 
        } 
       }, 5000); 

       } 
    });