如何交替两个imageview? Android的

时间:2015-02-04 14:30:18

标签: java android android-imageview

现在,只要我点击,图像就会改变。

我想让这个过程自动化(例如每秒一次)

这是我的实际代码

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

5 个答案:

答案 0 :(得分:2)

查看ViewFlipper

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

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

在XML中设置延迟

答案 1 :(得分:0)

你应该使用Handler和`postDelayed'。有关代码,请参阅this answer

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

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

也许使用ViewSwitcher(在您的casae ImageSwitcher应该可以使用)并使用View切换Handler

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

答案 4 :(得分:0)

您可以定期执行任务:

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