Android 将网络的Url资源转换为Drawable资源方式

 更新时间:2020年03月23日 09:09:41   作者:GreatCoder726  
这篇文章主要介绍了Android 将网络的Url资源转换为Drawable资源方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Overview

在今天的开发学习中,我遇到了一个需求是在App的flash页面添加bing每日一图。这些都简单,但是当我获取到了图片的Url时,我就遇到了一个非常尴尬的问题。就是如何将Url转换为Drawabl并且添加到ImageView.

这边的获取图片的Url就不说了。我们看一下如何将Url转换为Drawable.

Url转换为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;
}

这部分就是我们将网络Url资源转换为Drawable资源了。

然后我们根据我们的源码来分析一波:

首相我们创建了一个Drawable

然后我们通过我们的Url资源生成一个Drawable资源。

这样我们的Url网络资源,转换为Drawable就完成。

补充知识:URL转Drawable之 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); 
  } 
} 

以上这篇Android 将网络的Url资源转换为Drawable资源方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Android简单实现引导页

    Android简单实现引导页

    这篇文章主要为大家详细介绍了Android简单实现引导页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • 可支持快速搜索筛选的Android自定义选择控件

    可支持快速搜索筛选的Android自定义选择控件

    这篇文章主要为大家详细介绍了可支持快速搜索筛选的Android自定义选择控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 理解Android中的自定义属性

    理解Android中的自定义属性

    这篇文章主要介绍了理解Android中的自定义属性,在android相关应用开发过程中,固定的一些属性可能满足不了开发的需求,所以需要自定义控件与属性,本文将以此问题进行详细介绍,需要的朋友可以参考下
    2016-01-01
  • Android加载Gif动画实现代码

    Android加载Gif动画实现代码

    这篇文章主要为大家详细介绍了Android加载Gif动画实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android带进度条的文件上传示例(使用AsyncTask异步任务)

    Android带进度条的文件上传示例(使用AsyncTask异步任务)

    这篇文章主要介绍了Android带进度条的文件上传示例(使用AsyncTask异步任务),使用起来比较方便,将几个方法实现就行,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • Flutter自定义搜索框效果

    Flutter自定义搜索框效果

    这篇文章主要为大家详细介绍了Flutter自定义搜索框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • android使用webwiew载入页面使用示例(Hybrid App开发)

    android使用webwiew载入页面使用示例(Hybrid App开发)

    Hybrid App 融合 Web App 的原理就是嵌入一个WebView组件,可以在这个组件中载入页面,相当于内嵌的浏览器,下面是使用示例
    2014-03-03
  • Android 全局通知弹窗示例分析详解

    Android 全局通知弹窗示例分析详解

    这篇文章主要为大家介绍了Android 全局通知弹窗实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android双击事件拦截方法

    Android双击事件拦截方法

    下面小编就为大家分享一篇Android双击事件拦截方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android NDK 开发教程

    Android NDK 开发教程

    这篇文章主要介绍了Android NDK 开发教程的相关资料,需要的朋友可以参考下
    2015-11-11

最新评论