求交于各位大侠,我想让图片显示的区域每隔5秒就换一张图片,就像幻灯片自动播放一样
private ImageView mImageView = null;
private Integer[] MImgs = { R.drawable.image01, R.drawable.image02,
R.drawable.image03, R.drawable.image04, R.drawable.image05,
R.drawable.image06, R.drawable.image14, R.drawable.image08,
R.drawable.image09, R.drawable.image10, R.drawable.image11,
R.drawable.image12, R.drawable.image13, R.drawable.image07,
R.drawable.image16 };
Handler handler = new Handler() { @Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Bundle bundle = msg.getData(); mImageView.setImageResource(bundle.getInt("image"));
System.out.println("++++++++++++" + bundle.getInt("image"));
handler.removeMessages(1);
handler.sendEmptyMessageDelayed(1, 5000);
break;
}
super.handleMessage(msg); } }; class UpdateImage implements Runnable { @Override
public void run() {
Message message = new Message();
message.what = 1;
Bundle bundle = new Bundle();
for (int i = 0; i < MImgs.length; i++) {
bundle.putInt("image", MImgs[i]);
message.setData(bundle); }
handler.sendMessage(message);
}
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.five);
mImageView = (ImageView) findViewById(R.id.tupian);
// mImageView.setImageResource(R.drawable.image01);
new Thread(new UpdateImage()).start();
}
}
为什么我这样写只能够获得最后一张图片的ID,而后5秒更新得到的ID都是0,请各位大侠帮帮忙。
private ImageView mImageView = null;
private Integer[] MImgs = { R.drawable.image01, R.drawable.image02,
R.drawable.image03, R.drawable.image04, R.drawable.image05,
R.drawable.image06, R.drawable.image14, R.drawable.image08,
R.drawable.image09, R.drawable.image10, R.drawable.image11,
R.drawable.image12, R.drawable.image13, R.drawable.image07,
R.drawable.image16 };
Handler handler = new Handler() { @Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
Bundle bundle = msg.getData(); mImageView.setImageResource(bundle.getInt("image"));
System.out.println("++++++++++++" + bundle.getInt("image"));
handler.removeMessages(1);
handler.sendEmptyMessageDelayed(1, 5000);
break;
}
super.handleMessage(msg); } }; class UpdateImage implements Runnable { @Override
public void run() {
Message message = new Message();
message.what = 1;
Bundle bundle = new Bundle();
for (int i = 0; i < MImgs.length; i++) {
bundle.putInt("image", MImgs[i]);
message.setData(bundle); }
handler.sendMessage(message);
}
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.five);
mImageView = (ImageView) findViewById(R.id.tupian);
// mImageView.setImageResource(R.drawable.image01);
new Thread(new UpdateImage()).start();
}
}
为什么我这样写只能够获得最后一张图片的ID,而后5秒更新得到的ID都是0,请各位大侠帮帮忙。
参考了http://weizhulin.blog.51cto.com/1556324/323922把问题解决了。
private ImageView mImageView = null;
private Integer[] MImgs = { R.drawable.image01, R.drawable.image02,
R.drawable.image03, R.drawable.image04, R.drawable.image05,
R.drawable.image06, R.drawable.image14, R.drawable.image08,
R.drawable.image09, R.drawable.image10, R.drawable.image11,
R.drawable.image12, R.drawable.image13, R.drawable.image07,
R.drawable.image16 };
private int currentImagePosition = 0;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
updateImage();
break;
}
};
}; private class MyTask extends TimerTask { @Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);
} } public void updateImage() {
currentImagePosition = currentImagePosition % MImgs.length;
mImageView.setImageResource(MImgs[currentImagePosition]);
currentImagePosition++;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.five); Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTask(), 1, 5000);
}