这是从本地获取图片的方法,在Android4.0之后,增加了一些新特性,也增加了一些限制。其中有一个限制就是不能在主线程中访问网络,必须另开一条线程访问。但是这里又存在另外一个问题,在子线程中,无法直接操作UI控件的属性。
话不多说,直接上代码
public class NewThread6 extends Activity {
private ImageView image1;
//定义一个int数组来存放图片,在R文件中图片是以int形式存在的
int[] images = new int[] { R.drawable.ic_launcher,
R.drawable.actionbar_add_icon,
R.drawable.actionbar_icon,
R.drawable.actionbar_more_icon,
R.drawable.actionbar_search_icon, };
//定义一图片计数器
int currentImg = 0;
//定义一个handler来进行隔时间操作
private Handler handler = new Handler();
//新建一个runnable对象
private Runnable myRunnable = new Runnable() {
public void run() {
//每隔1秒切换一次
handler.postDelayed(this, 1000);
if (currentImg >= 4) {
currentImg = -1;
}
// 改变ImageView里显示的图片
image1.setImageResource(images[++currentImg]);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
image1 = (ImageView) findViewById(R.id.image1);
//初始化时显示第一张图片
image1.setImageResource(images[0]);
Button btn = (Button) findViewById(R.id.btn1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//将请求提交给runnable
handler.post(myRunnable);
}
});
}