博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用handler更新下载图片简单例子
阅读量:5793 次
发布时间:2019-06-18

本文共 3027 字,大约阅读时间需要 10 分钟。

hot3.png

跟新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

你可能感兴趣的文章
windows kill pid
查看>>
JS知识总结之内置对象
查看>>
驳 《驳 《停止学习框架》》
查看>>
关于在类数组中使用数组方法
查看>>
渡一教育js- 10原型,原型链,call/apply
查看>>
文本效果-学习笔记
查看>>
前端开源库免费 CDN 加速
查看>>
深入理解 ReentrantLock
查看>>
postman管理收藏夹,批量执行接口
查看>>
Tomcat部署时war和war exploded区别以及平时踩得坑
查看>>
nginx相关问题
查看>>
命令行的基本介绍
查看>>
使用 ale.js 制作一个小而美的表格编辑器(1)
查看>>
暖男须知,你应该转给他看看了
查看>>
招聘--前端开发
查看>>
读技术书籍一定要读最经典的
查看>>
人工智能/数据科学比赛汇总 2019.4
查看>>
「CSS思维」组件化VS原子化
查看>>
从产品经理的角度思考内容平台(一)——开启时不宜过于专业
查看>>
快速理解D3js 数据绑定之 enter 与 exit 与 update
查看>>