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

时间:2014-09-01 13:59:40

标签: java android android-studio

我有我的Java代码,我有这个布局,其中有ImageViewButton,在我的Drawable文件夹中我需要图像,我想要的是:当单击按钮前进,ImageView将显示图像(image1.png位于drawable文件夹中),后5秒显示另一个图像(image2.png)。问题是我不知道如何暂停。

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);
            }
        });

3 个答案:

答案 0 :(得分:4)

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

  1. 设置第一张图片
  2. 启动CountDownTimer
  3. 在onFinish()

    中设置新图像
        new CountDownTimer(5000, 1000) { // 5000 = 5 sec
    
         public void onTick(long millisUntilFinished) {
         }
    
         public void onFinish() {
            image.setImageResource(R.drawable.image2);
         }
    }.start();
    

    修改:

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

    CountDownTimer(long millisInFuture,long countDownInterval)

    所以第一个参数是你想要的总时间(以毫秒为单位,5秒= 5000毫安),第二个参数是间隔。这是1000 = 1秒。这意味着计时器将每秒打勾。因此onTick(long)将每秒调用一次(当计时器运行时)

答案 1 :(得分:0)

您还可以使用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);
            }
        });

答案 2 :(得分:0)

您也可以使用处理程序: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);

                }
    });