[英]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()
方法中刪除callBack:
public void onDestroy(){
handler.removeCallback(imageUpdate);
super.onDestroy();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.