如何交替两个imageview? Android

How to alternate two imageview? Android

现在一点击就换图

我想让这个过程自动进行(例如每秒)

这是我的实际代码

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.imageView:
            foto.setVisibility(View.INVISIBLE);
            foto1.setVisibility(View.VISIBLE);
            break;
        case R.id.imageView2:
            foto1.setVisibility(View.INVISIBLE);
            foto.setVisibility(View.VISIBLE);
    }
}

您应该使用带有“postDelayed”的Handler。请参阅 this answer 了解一些代码。

此外,您可以尝试使用 'ImageSwitcher' 而不是两个 'ImageView's

试试这个:

boolean isFirstVisible;
long millis;        

while(true) {
    millis = System.currentTimeMillis();

    if (isFirstVisible) {
        foto1.setVisibility(View.INVISIBLE);
        foto.setVisibility(View.VISIBLE);
        isFirstVisible = false;
    } else {
        foto.setVisibility(View.INVISIBLE);
        foto1.setVisibility(View.VISIBLE);
        isFirstVisible = true;
    }

    Thread.sleep(1000 - millis % 1000);
}   

也许使用 ViewSwitcher(在您的情况下 ImageSwitcher 应该可以工作)并使用 Handler?

切换 Views
private static final int delay=1000; //ms
Handler h = new Handler();
Runnable r = new Runnable(){
    public run(){
        //viewSwitcher.showNext();
        //exampole of swtiching
        h.postDelayed(r, delay);
    }
}
h.postDelayed(r, delay);

停止这个循环使用h.removeCallbacks(r)

你也可以使用viewSwitcher.postDelayed

你可以有一个周期性的任务来做:

ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(1);

scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
  public void run() {
    runOnUiThread(new Runnable() {
      public void run() {
        if (foto.getVisibility == View.VISIBLE) {
            foto.setVisibility(View.INVISIBLE);
            foto1.setVisibility(View.VISIBLE);
        } else {
            foto.setVisibility(View.VISIBLE);
            foto1.setVisibility(View.INVISIBLE);
        }
      }
    });
  }
}, 0, 1, TimeUnit.SECONDS);

看看ViewFlipper

http://developer.android.com/reference/android/widget/ViewFlipper.html

您可以使用 setFlipInterval(int) 或在 XML 中使用 android:flipInterval

设置延迟