求交于各位大侠,我想让图片显示的区域每隔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,请各位大侠帮帮忙。
解决方案 »
- 求指导关于:AndroidMenifest.xml中的权限问题:sharedUserId
- mapabc api 地图无法显示
- 令人纠结的ExpandableListView的onChildClick事件无法跳转
- android FM(收音机)问题
- Listview亮度显示的问题
- js有没有办法调安卓的tts控制朗读
- 不在同一个Activity上的ImageView能否绑定同一个ID来实现同一个方法
- 我在调试的时候为什么会出现这种错误?
- android 关于使用SharedPreferences来保存对象里既有属性又有集合的问题
- 机顶盒的一个launcher,我需要桌面一二级菜单的标题名字去掉。急急急。自己没有基础。不知如何下手。。
- 【求助】怎么定义按钮数组
- android后台服务用servlet怎么搭建
参考了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);
}