android客户端下载图片的方法

来源:互联网 发布:黑豹乐队 知乎 编辑:程序博客网 时间:2024/04/28 22:39

 

回复于: 2011-02-21 22:26:06

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

类似于这样的代码:

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

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

 

回复于: 2011-05-09 16:57:17

楼上正解。获得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来显示。 

 

原创粉丝点击