只要明白会使用handler 和 message 图片的自动播放就很简单了,就如同我在会议计时中所写的一样,也是利用handler 传输messge 来更新界面的。
int [] int_Image
中的 R.drawable.t1 到t4 是放在drawble 目录下的四张图片
package com.autoimage.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import android.widget.ImageView;
public class AutoImageActivity extends Activity {
private ImageView iv_Show_Image = null;
private int index = 0;
private int [] int_Image = {R.drawable.t1,R.drawable.t2,R.drawable.t3,R.drawable.t4};
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.iv_Show_Image = (ImageView) this.findViewById(R.id.iv_show_image);
this.iv_Show_Image.setBackgroundResource(R.drawable.t1);
autoShowImage();
}
public void autoShowImage(){//自动播放图片 通过Thread.sleep(2000) 每两秒刷新次图片
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
Message msg = new Message();
msg.obj = index;
handler.sendMessage(msg);
index ++;
if(index >= int_Image.length){
index = 0;
}
try {
Thread.sleep(2000);//具体应用时可以通过传参数的方法
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
}
public Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
//这里之所以没有用switch 来判断传回的msg。what 来控制 是应为这里的handler 只处理更新图片,传回来的信息就是图片的编号,所以不需要
iv_Show_Image.setBackgroundResource(int_Image[(Integer) msg.obj]);
};
};
}
所以对于开发而言 能够掌握handler 十分重要。 具体图就不发了,就是4张图片,具体使用中应该动态加载如资源的。操作方法只要变通一下,应该也不太难。
最后,如果大家有好的建议可以留言,我会第一时间回复的