如何使图片每隔5秒自动的切换

zac35 2011-11-28 05:19:05
求交于各位大侠,我想让图片显示的区域每隔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,请各位大侠帮帮忙。
...全文
860 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
只坏一点点 2012-02-21
  • 打赏
  • 举报
回复
mImageView报空指针异常
zac35 2011-12-01
  • 打赏
  • 举报
回复
恩,知道了,谢谢!
ahaso 2011-11-29
  • 打赏
  • 举报
回复
做一个timer,5秒启动一次发一个消息给handler 做一个imageview的set动作不就行了么
zac35 2011-11-29
  • 打赏
  • 举报
回复
没有人回复,算了自己顶一下。
参考了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);
}
ahaso 2011-11-29
  • 打赏
  • 举报
回复
话说你发了个帖子得顶下,不然没人看到的。。
ahaso 2011-11-29
  • 打赏
  • 举报
回复
恩,我前段时间刚好做图片slideshow过。。。
zac35 2011-11-29
  • 打赏
  • 举报
回复
刚学没多久,不太会做,找了好久才用了上面的方法解决了。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧