URL转Drawable之 Android中获取网络图片的三种方法_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2290 | 回复: 0   主题: URL转Drawable之 Android中获取网络图片的三种方法        下一篇 
谁是天蝎
注册用户
等级:大元帅
经验:90210
发帖:106
精华:0
注册:2011-7-21
状态:离线
发送短消息息给谁是天蝎 加好友    发送短消息息给谁是天蝎 发消息
发表于: IP:您无权察看 2015-10-27 15:35:00 | [全部帖] [楼主帖] 楼主

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);
	    }
}


以上就介绍了URL转Drawable之 Android中获取网络图片的三种方法,包括了Exception,Application方面的内容,希望对Android开发有兴趣的朋友有所帮助。



                                                                                                                             --转自



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论