android客户端下载图片的方法

 

HTTP 协议,就像下载一个图片一样。

类似于这样的代码:

URL url = new URL("http://xxx.xxx.xxx.xxx/img/xxx.gif");
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();

图片就在这个 InputStream 中,把这个 InputStream 包装到 Bitmap 中去。

 

楼上正解。获得InputStream后利用BitmapFactory.decodeStream(InputStream is)就可以返回一个Bitmap类型了,然后ImageView.setImageBitmap(Bitmap bm)就ok了

 

 

URL url = new URL("http://xxx.xxx.xxx.xxx/img/xxx.gif");

URLConnection conn = url.openConnection();

InputStream is = conn.getInputStream();

 

获得InputStream后利用BitmapFactory.decodeStream(InputStream is)返回一个Bitmap类型了,然后ImageView.setImageBitmap(Bitmap bm)

 

这样做在虚拟机中运行一点问题也没有问题(是连接到我所部署的网络服务器上,并下载其上面的图片),但是放到真机时,却总是等待并黑屏,请问这是怎么回事,该怎么解决

 

 

#1 得分:10 回复于: 2012-11-07 10:03:27 

这个操作不要放在主线程去实现,要开个线程或异步任务来完成 

 

#2 得分:15 回复于: 2012-11-07 10:35:48 

下载图片要耗时,会阻塞UI主线程,会出现你上面黑屏的情况。想要不黑屏,可以新开个线程去执行下载,配合Handler更新UI 

 

#3 得分:5 回复于: 2012-11-07 15:54:23 

黑屏是线程卡住了,你访问网络肯定不能在主线程中做的,要另外开线程去做。否则会直接意外退出 

 

#4 得分:5 回复于: 2012-11-08 10:59:04 

楼主的程序没有在4.0以上的版本中测试过吧?测试下就会发现根本不能运行.

 

 

#5 得分:10 回复于: 2012-11-08 11:25:21 

网络请求需要异步的,你都放在主线程里,很影响用户体验的

 

#6 得分:5 回复于: 2012-11-08 11:30:47 

引用 4 btyh17mxy 的回复:

楼主的程序没有在4.0以上的版本中测试过吧?测试下就会发现根本不能运行.

 

3.0以上的就不能运行了

 

这个要在子线程里去做下载,然后通知Handler更新UI 

 

#8 得分:5 回复于: 2012-11-09 12:27:45 

6楼正解!!主线程画UI被你的联网阻塞了,需要开启新的子线程来实现!建议 handler 

 

#9 得分:5 回复于: 2012-11-09 12:46:00 

你下载的是gif图片,android 播放对于gif图片,需要应用另外的包GifView来显示。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值