我需要设置 setImageResource,暂停并更改为不同的 setImageResource

I would need to Set setImageResource, pause and change to different setImageResource

我正在尝试设置一个图像,并在短暂的停顿(如闪烁)后将其更改为不同的图像; 它应该在应用程序启动后自动启动。

public class MainActivity extends ActionBarActivity {

ImageView image1;

private void flash(){
    Thread flashing=new Thread(){
        public void run(){
            try {
                image1.setImageResource(R.drawable.red_circle);
                sleep(1000);
                image1.setImageResource(R.drawable.white_circle);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    flashing.start();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    image1=(ImageView)findViewById(R.id.imageView1);

    flash();

}

} 这会导致错误和应用程序停止。

试试这个:

ImageView slide;
private Handler handler;
private int showPic = -1;// default value should be -1
Integer[] ids = new Integer[] { R.drawable.red_circle, R.drawable.white_circle};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.slide_show);
    slide = (ImageView) findViewById(R.id.slide);
    handler = new Handler();
    handler.postDelayed(imageUpdate, 10);
}


private void setNextImage() {
    showPic++;
    if (showPic == ids.length) {
        showPic = -1;
        handler.removeCallbacks(imageUpdate);
    } else {
        slide.setImageResource(ids[showPic]);
        handler.postDelayed(imageUpdate, 1000);
    }
}

Runnable imageUpdate= new Runnable() {
    @Override
    public void run() {
        setNextImage();
    }
};  

更新: 如果你想在你的图像上循环,你可以将 setNextImage() 方法更改为此,还要注意我将 showPic 的默认值更改为 -1(如果你想要循环与否它的默认值应该是-1):

private void setNextImage() {
    showPic++;
    if (showPic == ids.length) {
        showPic = 0;
    }
    slide.setImageResource(ids[showPic]);
    handler.postDelayed(imageUpdate, 1000);
}  

onDestroy() 方法中删除回调:

public void onDestroy(){
     handler.removeCallback(imageUpdate);
     super.onDestroy();
}