通过控件加载远程图片的方法及系统技术方案

技术编号:8078749 阅读:2313 留言:0更新日期:2012-12-13 21:26
一种通过控件加载远程图片的方法,包括以下步骤:下载远程图片文件;对所述远程图片文件进行解码,读取图片数据;根据所述图片数据绘制图片到控件上。采用该方法,能在Android系统的移动终端上,读取远程图片并展示在用户界面上。此外,还提供了一种通过控件加载远程图片的系统。

【技术实现步骤摘要】
通过控件加载远程图片的方法及系统
本专利技术涉及移动操作系统,尤其涉及一种通过控件加载远程图片的方法及系统。
技术介绍
Android是一种基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。图片控件是UI(UserInterface,用户界面)控件中的一种常用控件,例如,Android平台中用来显示图片的图片显示控件ImageView,可以将本地图片展示到用户界面上。然而,传统的Andriod系统中的图片控件只能展示本地图片,不能读取远程图片并展示。
技术实现思路
基于此,有必要提供一种能在用户界面展示远程图片的通过控件加载远程图片的方法。一种通过控件加载远程图片的方法,包括以下步骤:下载远程图片文件;对所述远程图片文件进行解码,读取图片数据;根据所述图片数据绘制图片到控件上。在优选的实施例中,在所述下载远程图片文件的步骤之前还包括:在控件首次展现时绘制等待加载图片到控件上。在优选的实施例中,在所述下载远程图片文件的步骤之前还包括:判断是否使用本地缓存,若不使用或使用本地缓存但本地缓存中不存在所述远程图片文件或本地缓存读取出错时,通过远程协议下载远程图片文件。在优选的实施例中,所述根据所述图片数据绘制图片到控件上的步骤为:判断图片数据是否读取成功,若是,则将读取到的图片数据设置为展示图片,否则,将加载失败图片设置为展示图片;通知控件图片已更新,绘制所述展示图片到控件上。在优选的实施例中,在所述绘制展示图片到控件上的步骤之前还包括:判断所述展示图片是否与所述等待加载图片大小一致,若不一致,则修改控件大小后绘制所述展示图片到修改后的控件上。此外,还有必要提供一种能在用户界面展示远程图片的通过控件加载远程图片的系统。一种通过控件加载远程图片的系统,包括:下载模块,用于下载远程图片文件;解码模块,用于对所述远程图片文件进行解码,读取图片数据;绘制模块,用于根据所述图片数据绘制图片到控件上。在优选的实施例中,所述绘制模块还用于在控件首次展现时绘制等待加载图片到控件上。在优选的实施例中,所述系统还包括:第一判断模块,用于在下载远程图片文件之前判断是否使用本地缓存;所述下载模块还用于在不使用本地缓存或使用本地缓存但本地缓存中不存在所述远程图片文件或本地缓存读取出错时,通过远程协议下载远程图片文件。在优选的实施例中,所述系统还包括:第二判断模块,用于判断图片数据是否读取成功;设置模块,用于在图片数据读取成功时将读取到的图片数据设置为展示图片,在图片数据读取不成功时将加载失败图片设置为展示图片,并通知控件图片已更新;所述绘制模块用于绘制所述展示图片到控件上。在优选的实施例中,所述系统还包括:第三判断模块,用于判断所述展示图片是否与所述等待加载图片大小一致;所述绘制模块用于当所述展示图片与所述等待加载图片大小不一致时,修改控件大小再绘制所述展示图片到修改后的控件上。上述通过控件加载远程图片的方法及系统,通过增强的图片控件能够读取远程图片,对远程图片文件进行解码后读取图片数据,根据图片数据绘制图片到控件上,实现了通过控件加载远程图片,对于Android系统的移动终端,既能将本地图片展示在用户界面上,又能将远程图片展示在用户界面上,充分满足了用户需求。【附图说明】图1为一个实施例中通过控件加载远程图片的方法的流程图;图2为一个实施例中通过控件加载远程图片的系统的结构示意图;图3为另一个实施例中通过控件加载远程图片的系统的结构示意图。【具体实施方式】在一个实施例中,如图1所示,一种通过控件加载远程图片的方法,具体过程如下:步骤S102,下载远程图片文件。在步骤S102之前,控件首次展现时可绘制等待加载图片到控件上。等待加载图片可以事先进行设置,例如,将显示为沙漏的图片设置为等待加载图片。在控件上显示等待加载图片,提示用户此时图片正在等待加载的状态。步骤S102中,启动异步任务,下载远程图片文件。在一个优选的实施例中,在下载远程图片文件之前异步任务首先判断是否使用本地缓存,即判断是否使用本地缓存中的图片文件,若是,则进一步判断本地缓存中是否存在该图片文件,若是,则可直接从本地缓存中获取该图片文件,若不使用本地缓存或者使用本地缓存但本地缓存中不存在该图片文件或者本地缓存读取出错时,则通过远程协议下载远程图片文件。优选的,远程协议为Http协议。当然也可以采用其他远程协议,例如,TCP/IP协议等。步骤S104,对远程图片文件进行解码,读取图片数据。在步骤S104中,对远程图片文件进行解码,通过获取图片的Bitmap对象来读取图片数据,如果使用本地缓存,则将读取的图片数据保存在本地缓存中。步骤S106,根据图片数据绘制图片到控件上。在步骤S106中,判断图片数据是否读取成功,若是,则将读取到的图片数据设置为展示图片,否则,将加载失败图片设置为展示图片,然后通知控件图片已更新,绘制展示图片到控件上。在将绘制展示图片到控件上之前,还可判断展示图片是否与等待加载图片大小一致,若不一致,则修改控件大小后绘制展示图片到修改后的控件上。在一个实施例中,实现远程图片异步加载的控件主要可通过三个类来实现,包括负责远程图片下载和展示的类、负责读取远程图片和修改控件大小的类、负责在上述两个类之间进行互相通知的类。例如,在Android系统平台中,实现远程图片异步加载的控件主要涉及以下三个类:URLDrawable类是核心类,继承Drawable类,用来实现远程图片的下载、解析,并通知控件展示图片等。URLImageView类是辅助类,是对Android的ImageView控件进行了增强,URLImageView类可以实现远程图片的读取,负责接收URLDrawable类的通知并在需要修改控件大小时修改控件大小。URLDrawableListerner类,负责在图片加载过程中的各种可能情况的通知,是URLDrawable类和URLImageView类之间通知的桥梁。该实施例中,控件首次展现在使用Android系统的移动终端的屏幕上时,则会触发URLDrawable类的draw方法,绘制等待加载图片到控件上。同时启动异步任务,开始下载远程图片文件。对下载得到的远程图片文件进行解码,读取图片的Bitmap对象(即获取图片数据)。如果Bitmap对象读取成功,则在Android的UI线程上设置展示图片为读取到的Bitmap对象,然后调用Drawable类的invalidateDrawable方法来通知控件图片已更新。该实施例中,通过调用URLDrawableListerner类的onloadSuccessed、onloadFialed、onloadCancelled、onloadInterrupted等函数来通知控件图片的加载成功、失败、取消、中断等状态。控件在收到invalidateDrawable事件后,调用invalidate函数重新绘制自身,此时又会调用到URLDrawable类的draw方法来绘制,如果展示图片为读取到的Bitmap对象,则draw方法接收Bitmap对象绘制图片到屏幕上,如果读取失败,例如网络连接异常或异步任务被取消时,则通过draw方法绘制加载失败图片到屏幕上。其中,加载本文档来自技高网...
通过控件加载远程图片的方法及系统

【技术保护点】
一种通过控件加载远程图片的方法,包括以下步骤:下载远程图片文件;对所述远程图片文件进行解码,读取图片数据;根据所述图片数据绘制图片到控件上。

【技术特征摘要】
1.一种通过控件加载远程图片的方法,所述方法应用于Android系统,包括以下步骤:在控件首次展现时绘制等待加载图片到控件上;下载远程图片文件;对所述远程图片文件进行解码,通过获取图片的Bitmap对象读取图片数据;根据所述图片数据绘制图片到控件上,包括:判断图片数据是否读取成功,若是,则将读取到的图片数据设置为展示图片,否则,将加载失败图片设置为展示图片,通知控件图片已更新,判断所述展示图片是否与所述等待加载图片大小一致,若不一致,则修改控件大小后绘制所述展示图片到修改后的控件上。2.根据权利要求1所述的通过控件加载远程图片的方法,其特征在于,在所述下载远程图片文件的步骤之前还包括:判断是否使用本地缓存,若不使用或使用本地缓存但本地缓存中不存在所述远程图片文件或本地缓存读取出错时,通过远程协议下载远程图片文件。3.一种通过控件加载远程图片的系统,其特征在于,所述系统应用于Android系统,包括:下载模块,用于下载远程图片文件;解...

【专利技术属性】
技术研发人员:万鑫
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1