使用handler更新下载图片简单例子


跟新UI第一种方式

MainActivity类 

代码


public class MainActivity extends Activity {

//下载图片的地址URL

private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";

private ImageView imageview;

private ProgressDialog progressDialog;

//更新UI 主线程

Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

switch (msg.what) {

case 1:

progressDialog.show();

break;

case 2:

imageview.setImageBitmap((Bitmap)msg.obj);

break;

case 3:

//关闭下载进度条

progressDialog.dismiss();

break;

}

};

};


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


this.imageview = (ImageView) this.findViewById(R.id.imageview);

// 下载加载进度条

progressDialog = new ProgressDialog(this);

progressDialog.setTitle("提示");

progressDialog.setIcon(R.drawable.ic_launcher);

progressDialog.setMessage("正在下载...");

//下载图片方法1

// 子线程

new Thread(new Runnable() {

@Override

public void run() {

// 显示下载进度条

handler.sendEmptyMessage(1);//发送一个空消息

try {

Thread.sleep(1000);//休眠时间长点 保证下载进度条显示才下载图片

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 下载图片

byte[] img_data = downimag();

Bitmap bitmap = BitmapFactory.decodeByteArray(img_data, 0,

img_data.length);

Message message = Message.obtain();

message.what = 2;

message.obj = bitmap;

//图片数据下载完成消息

handler.sendMessage(message);

//关闭下载进度条消息

handler.sendEmptyMessage(3);

}

}).start();

}


private byte[] downimag() {

HttpGet get = new HttpGet(url);

HttpClient client = new DefaultHttpClient();

HttpResponse response;

try {

response = client.execute(get);

if (response.getStatusLine().getStatusCode() == 200) {

return EntityUtils.toByteArray(response.getEntity());

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}




===================================





跟新UI第二种方式


MainActivity类


代码


public class MainActivity extends Activity {

private String url = "http://litchiapi.jstv.com/Attachs/Top/11949/e650e0201de541d2ba91dca202b0fcfe.jpg";

private ImageView imageview;

private Handler handler = new Handler();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

this.imageview = (ImageView) this.findViewById(R.id.imageview);

//开启子线程

new Thread (new Runnable() {

@Override

public void run() {

// 下载图片

byte[] img_data = downimag();

final Bitmap bitmap = BitmapFactory.decodeByteArray(img_data, 0,

img_data.length);

//更新UI第二种方法

//使用handle.post方法 

handler.post(new Runnable() {

@Override

public void run() {

//在这里更新UI-- 主线程

imageview.setImageBitmap(bitmap);

}

});

}

}).start();

}

private byte[] downimag() {

HttpGet get = new HttpGet(url);

HttpClient client = new DefaultHttpClient();

HttpResponse response;

try {

response = client.execute(get);

if (response.getStatusLine().getStatusCode() == 200) {

return EntityUtils.toByteArray(response.getEntity());

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}


转载于:https://my.oschina.net/u/2542711/blog/614643

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值