Android下载图片显示问题

============问题描述============

我用下面的代码从服务器端下载了图片,运行在新开的线程中

System.out.println("before bm = " + bm);

						String imageUrl1 = "http://10.0.2.2:8080/BBStuServlet/test01_upload_1.jpg";

						bm = NetTool.downlodBitmap(imageUrl1);

						map2.put("image", bm);

						System.out.println("after bm = " + bm);

logcat里有输出:  before bm=null   和  after bm = [email protected]

然后我就在主线程里给image设置Bitmap

image.setImageBitmap(bm);

downloadBitmap()方法如下:

/*

	 * 从指定url下载图片

	 */

	public static Bitmap downlodBitmap(String url) {

		URL myFileUrl = null;

		Bitmap bitmap = null;

		try {

			myFileUrl = new URL(url);

		} catch (MalformedURLException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		}

		try {

			HttpURLConnection conn = (HttpURLConnection) myFileUrl

					.openConnection();

			conn.setDoInput(true);

			conn.connect();

			InputStream is = conn.getInputStream();

			bitmap = BitmapFactory.decodeStream(is);

			is.close();

		} catch (IOException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		}

可是image并没有显示出来该bitmap,这是为什么。明明已经显示下载好了,图片在135K,也不大啊。怎么回事,纠结一天了。

============解决方案1============

因为你执行image.setImageBitmap(bm);时图片并没有下载好,你应该在下载好后给主线程发消息,通知主线程显示图片。

============解决方案2============

用handler更新主线程图片,或者用asynctask这个异步下载图片

时间: 2024-08-27 00:40:55

Android下载图片显示问题的相关文章

Android下载图片/调用系统相机拍照、显示并保存到本地

package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.

Android下载并显示GIF图

最近项目需要实现在线加载GIF图的功能,于是我在网上翻了一番,发现有个开源项目(android-gif-drawable)可以很好的支持GIF动态图的显示.而且它的底层解码使用C实现,极大的提高了解码效率,同时很大程度上避免了OOM现象出现. 这篇文章主要是展示如何使用该项目的Demo,以备不时之需. 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too

Android下载图片路径问题

============问题描述============ 下图一是我MyEclipse中项目的WebRoot文件夹,test01_upload存储的是用户上传的图片,test01_upload_1.jpg是一张测试图片.我发现我用"webRoot路径/test01_upload_1.jpg"时就能正确下载到这张图片,但是用"webRoot路径/test01_upload/图片名"却下载不到test01_upload中的图片,报NullpointerException

Android下载图片 图片的异步加载 和缓存存取

一.创建异步任务 public class LoadBitmapAsyn extends AsyncTask<String,Void,Bitmap> { Context context; ImageView img; private HashMap<String,SoftReference<Bitmap>> imageCache=null; public LoadBitmapAsyn(ImageView img){ this.img=img; this.context=

Android 下载图片并且设置进度条

package com.example.asynctask; import java.io.ByteArrayOutputStream;import java.io.InputStream; import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.cli

Android Studio 第七十期 - Android下载图片安装apk 获取权限

代码已经整理好,效果如下图: 地址:https://github.com/geeklx/myapplication2018/tree/master/p013_updatemanagerpermission 原文地址:http://blog.51cto.com/liangxiao/2150519

Android中使用HttpURLConnection实现GET POST JSON数据与下载图片

Android6.0中把Apache HTTP Client所有的包与类都标记为deprecated不再建议使用 所有跟HTTP相关的数据请求与提交操作都通过HttpURLConnection类实现,现实是 很多Android开发者一直都Apache HTTP Client来做andoird客户端与后台HTTP接口数 据交互,本人刚刚用HttpURLConnection做了一个android的APP,不小心踩到了几个 坑,总结下最常用的就通过HttpURLConnection来POST提交JSO

Android 解决图片大量下载:软引用必须懂4点

Android 解决图片大量下载:软引用必须懂4点 可能对于Android开发者来说,软引用这个词有的会不是很熟悉,软引用在Java开发中用的比较多,但是,在Android开发中引用软引用,会给我们解决很多难题. AD: 1.对象的强.软.弱和虚引用 为了能更加灵活控制对象的生命周期,需要知道对象引用的4中级别,由高到低依次为 :强引用.软引用.弱引用和虚引用 备注: 这四种的区别: ⑴强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会

Android 获取并显示远程图片 Picasso框架的使用(一)

转载请注明出处:明桑Android 在Android开发中,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpUrlConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码,还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: Picasso:A Powerful Image Downloading and Caching Library for Android 根据名字就知道它是跟什么相关了(Picasso:毕加索)它的基本操