简体   繁体   English

我需要设置setImageResource,暂停并更改为其他setImageResource

[英]I would need to Set setImageResource, pause and change to different setImageResource

I am trying to set a image and change it to different image after a small pause (like a flashing); 我试图设置图像并将其稍作停顿(例如闪烁)后将其更改为其他图像; And it should start automatically after app is started. 并且它应该在应用启动后自动启动。

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

}

} This causes error and app to stop. }这会导致错误和应用程序停止。

try this one: 试试这个:

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

UPDATE: if you want loop on your images you can change setNextImage() method to this, also note that I change default value for showPic to -1(if you want loop or not its default value should be -1): 更新:如果要在图像上循环,可以将setNextImage()方法更改为此,还要注意,我将showPic的默认值更改为-1(如果要循环,则默认值应为-1):

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

in onDestroy() method remove callBack: onDestroy()方法中删除callBack:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM