求交于各位大侠,我想让图片显示的区域每隔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,请各位大侠帮帮忙。

解决方案 »

  1.   

    没有人回复,算了自己顶一下。
    参考了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);
    }
      

  2.   

    做一个timer,5秒启动一次发一个消息给handler 做一个imageview的set动作不就行了么
      

  3.   

    恩,我前段时间刚好做图片slideshow过