`

Android中获取网络图片的三种方法

阅读更多
    android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Application Not Responding)对话框的情况。对于这种情况,一般的方法就是耗时操作用线程来实现。下面列三种获取url图片的方法:
1.直接获取:(容易:ANR,不建议)
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;
Drawable drawable = loadImageFromNetwork(IMAGE_URL);
mImageView.setImageDrawable(drawable) ;

公用方法:
private Drawable loadImageFromNetwork(String imageUrl)
{
	Drawable drawable = null;
	try {
		// 可以在这里通过文件名来判断,是否本地有此图片
		drawable = Drawable.createFromStream(
				new URL(imageUrl).openStream(), "image.jpg");
	} catch (IOException e) {
		Log.d("test", e.getMessage());
	}
	if (drawable == null) {
		Log.d("test", "null drawable");
	} else {
		Log.d("test", "not null drawable");
	}
	
	return drawable ;
}


2. 后台线程获取url图片:
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;
new Thread(new Runnable(){
	Drawable drawable = loadImageFromNetwork(IMAGE_URL);
	@Override
	public void run() {
		
	    // post() 特别关键,就是到UI主线程去更新图片				
	    mImageView.post(new Runnable(){
		@Override
		public void run() {
		    // TODO Auto-generated method stub
		    mImageView.setImageDrawable(drawable) ;
		}}) ;
		}
		
}).start()  ;


3.AsyncTask获取url图片
mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;
new DownloadImageTask().execute(IMAGE_URL) ;
private class DownloadImageTask extends AsyncTask<String, Void, Drawable> 
{
	    
	    protected Drawable doInBackground(String... urls) {
	        return loadImageFromNetwork(urls[0]);
	    }

	    protected void onPostExecute(Drawable result) {
	        mImageView.setImageDrawable(result);
	    }
}


比较三种方法,感觉代码简洁方面用第三方法不错。
1
0
分享到:
评论
3 楼 houhualiang 2013-10-23  
2 楼 学而乐 2011-06-14  
两个写法都可以,我测试过了。你的写法很正规,谢谢。
1 楼 efei 2011-06-13  
后台线程获取url图片,是不是应该写成这样?
new Thread(new Runnable(){
// Drawable drawable = loadImageFromNetwork(IMAGE_URL);
@Override
public void run() {
    Drawable drawable = loadImageFromNetwork(IMAGE_URL);
         //...
}
}).start()  ;

相关推荐

    android 获取网络图片

    总结来说,Android中获取网络图片涉及到网络请求、Bitmap解码、内存管理和用户体验优化。使用现代库如Glide和Picasso可以简化这个过程,同时提供更好的性能和功能。在实际开发中,应根据项目需求选择最适合的方法。

    Android获取网络图片

    总之,Android获取网络图片的关键在于正确使用线程模型来分离UI更新和网络请求,同时结合合适的图片加载库来优化性能。通过Thread和Handler的组合,我们可以实现在不阻塞主线程的情况下,安全、有效地加载网络图片。

    android安卓通过url获取网络图片并显示在imageview中

    总结,通过URL获取网络图片并在Android应用中显示,主要涉及以下几个知识点: 1. 添加第三方库Glide及其依赖。 2. 配置AndroidManifest.xml以允许网络访问。 3. 使用Glide的API加载图片到ImageView。 4. 可选地,...

    android获取网络图片

    在Android开发中,获取网络图片是一项常见的任务,尤其在构建用户界面时,如显示新闻、商品详情或个人头像等。本案例主要讲解如何在Android应用中通过HTTP GET请求下载并显示网络上的图片。我们将围绕以下几个核心...

    android中获取网络图片并显示以及去掉标题

    总之,Android中获取网络图片并显示涉及网络请求、数据解析、图片缓存和UI渲染等多个步骤。使用合适的工具和库,如`OkHttp`和`Glide`,可以简化这些操作,同时提升应用性能和用户体验。在实际开发中,还应遵循最佳...

    Android通过网络URL获取图片并显示

    本篇将详细讲解如何在Android应用中实现从网络URL获取并显示图片的功能。 首先,我们需要一个网络库来处理HTTP请求。常见的有Volley、OkHttp和Retrofit等。这里以OkHttp为例,它是一个高效的网络库,支持异步请求和...

    android 如何从网络获取一张图片并显示

    如何从网络中获取一张图片,并显示出来?? 首先应想到若要从网络资源中获取图片,就需要通过流操作,于是就想到如何创建流。 第一步:指定图片资源的URL 第二步:通过RUL获取一个connection 第三步:通过连接获取...

    android从网络获取图片资源,图片放大、缩小、触摸等操作。

    5. **ImageView的使用**:在Android中,ImageView是展示图片的主要组件。可以通过设置其scaleType属性来控制图片的显示方式,如CENTER_CROP、FIT_CENTER、MATRIX等。在处理触摸缩放时,可能需要通过Matrix来动态改变...

    android HttpClient 获取网络图片

    android HttpClient 获取网络图片 实例

    Android如何获取网络图片

    综上所述,Android获取网络图片涉及网络编程、图像处理和UI交互等多个方面,需要理解网络请求、字节流处理以及UI线程规则等核心知识点。同时,为了优化性能和用户体验,还需要关注内存管理和缓存策略。

    Android获取网络图片的方法.rar

    Android获取网络图片的方法附演示源码,主要写的是Android从网上获取图片的几种写法。1.首先是布局文件,新建一个pic.xml文件,然后是AndroidMainFest.xml文件,然后就是MainActivity文件了,具体实现的每步代码,...

    android获取网络图片、html代码

    综上所述,Android获取网络图片和HTML代码涉及到网络请求、数据解析、文件操作以及UI显示等多个方面。理解并掌握这些技术,对于开发功能丰富的Android应用至关重要。在实际开发中,还应考虑网络异常处理、内存优化、...

    android-获取网上图片demo

    首先,Android提供了多种方式来实现网络图片的获取,包括但不限于以下几种方法: 1. **使用HttpURLConnection或HttpClient**:这是最基础的方法,通过发送HTTP请求获取图片的URL。这种方式需要手动处理数据流,解析...

    Android从网络上获取Gif图片并显示

    利用android开源库android-gif-drawable和android-async-http不仅能显示本地的gif图片,还能从网络上获取Gif图片并显示.即使是较大的gif图片,也不会报OOM异常。

    从网络获取图片按图片原大小显示

    1. **网络图片加载**:Android中,我们可以使用多种库来从网络获取图片,如 Glide, Picasso, Fresco 等。这些库提供了便捷的方法来加载网络图片,并且支持缓存策略,减少网络请求次数,提高用户体验。 2. **图片原...

    android imageview获取网络图片

    以上就是Android中获取网络图片并显示到ImageView的基本知识点,通过学习和实践,你可以根据项目需求选择合适的方法来实现这一功能。在提供的"URLTest"文件中,可能包含了一个简单的示例,帮助你理解如何实现这个...

    android异步获取网络图片()

    在Android开发中,异步获取网络图片是一项基本...总结,Android中异步获取网络图片通常使用上述的库或框架,它们都能有效提高性能,减少资源消耗。在实际开发中,应根据项目需求选择合适的方法,以达到最佳的用户体验。

Global site tag (gtag.js) - Google Analytics