在两个图像之间循环

时间:2016-04-21 09:46:26

标签: java android imageview android-imageview picasso

我想连续在两个图像之间循环。第一个图像应该由第二个图像替换,第二个图像应该由第一个图像替换。

到目前为止我的代码如下:

imageHandler = new Handler();
    imageHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Picasso.with(TokenActivity.this).load(R.drawable.app_icon).into(iconImageView);
        }
    }, 1000);
    imageHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Picasso.with(TokenActivity.this).load(R.drawable.camera_icon).into(iconImageView);
        }
    }, 2000);

这里的翻转只发生了一次。如何编程以使其可以无限重复?

2 个答案:

答案 0 :(得分:3)

声明两个runnable:

Runnable goToImage2;
Runnable goToImage1 = new Runnable() {
  @Override
  public void run() {
   Picasso.with(TokenActivity.this).load(R.drawable.app_icon).into(iconImageView);
  handler.postDelayed(goToImage2, 2000);
  }
}
goToImage2 = new Runnable() {
  @Override
  public void run() {
   Picasso.with(TokenActivity.this).load(R.drawable.camera_icon).into(iconImageView);
  handler.postDelayed(goToImage1, 2000);
  }
}

然后只需启动第一个:

handler.postDelayed(goToImage1, 0);

编辑:如果你只需要两个图像,你也可以简单地使用布尔值来知道要显示哪个图像,因此只使用一个可运行的图像:

boolean isShowingFirst = true;

Runnable changeImage = new Runnable() {
  @Override
  public void run() {
   Picasso.with(TokenActivity.this).load(isShowingFirst ? R.drawable.camera_icon : R.drawable.app_icon).into(iconImageView);
  isShowingFirst = !isShowingFirst;
  handler.postDelayed(changeImage, 2000);
  }
}

然后启动它:

handler.postDelayed(changeImage, 0);

答案 1 :(得分:1)

我的建议是用一个线程简化整个事情。

new Thread(new Runnable(){

    public void run(){
        while(true){
            Picasso.with(TokenActivity.this).load(R.drawable.app_icon).into(iconImageView);

            this.sleep(2000);

            Picasso.with(TokenActivity.this).load(R.drawable.camera_icon).into(iconImageView);


            this.sleep(2000);
        }
    }

}).start();

这个答案很简单,因为它可能不是你想要实现它的方式。