一种移动终端图片显示方法及系统与流程

文档序号:13086627阅读:142来源:国知局
技术领域本发明涉及移动终端相关技术领域,特别是一种移动终端图片显示方法及系统。

背景技术:
图片应用,特别是壁纸应用,需要显示大量的图片,在显示每张图片时都有相同的需求.包括图片缓存,解码,下载,动画展现,裁剪,形状,位置等。现有的图片显示方式,对每张图片都需要单独下载、解码、缓存、裁剪、形状生成、设置展示位置等操作,当图片数量较多且采用多线程处理时,容易造成管理混乱的情况,特别是当移动终端的处理器运算能力不足时,会严重影响图片的加载速度。

技术实现要素:
基于此,有必要针对现有技术的图片应用在显示大量图片是占用系统资源较高的技术问题,提供一种移动终端图片显示方法及系统。本发明提供一种移动终端图片显示方法,包括:主线程以及至少一个由线程池维护管理的图片处理线程;所述主线程执行:背景创建步骤,包括:在移动终端屏幕上显示至少一个视图容器;图片处理任务构建步骤,包括:获取每个视图容器的下载地址、展示选项和指示所述视图容器的视图容器标识,采用每个视图容器的下载地址、展示选项和视图容器标识作为参数构建图片处理任务,将图片处理任务加入管理所述图片处理线程的线程池的任务队列;图片展示步骤,包括:响应于所述图片处理线程发送的通知,将所述图片处理线程返回的处理后的图片展示在对应的显示位置;所述图片处理线程执行:任务执行步骤,包括:从所述线程池的任务队列中获取一个图片处理任务并执行,图片处理任务从所述下载地址下载并解码得到下载图片,根据所述展示选项,对所述下载图片进行处理得到处理后的图片,将所述处理后的图片在移动终端屏幕上的显示位置,设置为所述视图容器标识所指示的视图容器在移动终端屏幕上的相对位置;通知步骤,包括:所述图片处理任务执行完毕后通知所述主线程,向所述主线程返回设置有显示位置的所述处理后的图片。进一步的,所述根据所述展示选项,对所述下载图片进行处理得到处理后的图片,具体包括:如果所述展示选项包括显示动画,则将所述下载图片处理为动态图片,将所述动态图片作为处理后的图片;如果所述展示选项包括特定形状,则将所述下载图片裁剪为所述特定形状;如果所述展示选项包括缩放比例,则将所述下载图片缩放为所述缩放比例。进一步的,所述图片处理任务从所述下载地址下载并解码得到下载图片,具体包括:检查图片缓存中是否有与所述下载地址关联的已解码图片,如果有,则从所述图片缓存中获取与所述下载地址关联的已解码图片作为下载图片,否则;检查系统缓存中是否有与所述下载地址关联的未解码图片,如果有,则从所述系统缓存中获取与所述下载地址关联的未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片,否则;从所述下载地址下载得到未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片。更进一步的,图片处理任务还包括:如果所述展示选项包括图片缓存指示,则将所述已解码图片缓存在所述图片缓存;如果所述展示选项包括系统缓存指示,则将所述未解码图片缓存中所述系统缓存。再进一步的,所述主线程在构建图片处理任务后,将图片处理任务与图片处理任务的视图容器标识所指示的视图容器关联,所述主线程还执行视图容器刷新步骤;所述视图容器刷新步骤,包括:当视图容器被刷新,则从线程池的任务队列中,取消被刷新的视图容器所关联的图片处理任务,重新执行图片处理任务构建步骤。本发明提供一种移动终端图片显示系统,包括:主线程单元以及至少一个由线程池维护管理的图片处理线程单元;所述主线程单元,包括:背景创建模块,用于:在移动终端屏幕上显示至少一个视图容器;图片处理任务构建模块,用于:获取每个视图容器的下载地址、展示选项和指示所述视图容器的视图容器标识,采用每个视图容器的下载地址、展示选项和视图容器标识作为参数构建图片处理任务,将图片处理任务加入管理所述图片处理线程单元的线程池的任务队列;图片展示模块,用于:响应于所述图片处理线程单元发送的通知,将所述图片处理线程单元返回的处理后的图片展示在对应的显示位置;所述图片处理线程单元,包括:任务执行模块,用于:从所述线程池的任务队列中获取一个图片处理任务并执行,图片处理任务从所述下载地址下载并解码得到下载图片,根据所述展示选项,对所述下载图片进行处理得到处理后的图片,将所述处理后的图片在移动终端屏幕上的显示位置,设置为所述视图容器标识所指示的视图容器在移动终端屏幕上的相对位置;通知模块,用于:所述图片处理任务执行完毕后通知所述主线程单元,向所述主线程单元返回设置有显示位置的所述处理后的图片。进一步的,所述根据所述展示选项,对所述下载图片进行处理得到处理后的图片,具体包括:如果所述展示选项包括显示动画,则将所述下载图片处理为动态图片,将所述动态图片作为处理后的图片;如果所述展示选项包括特定形状,则将所述下载图片裁剪为所述特定形状;如果所述展示选项包括缩放比例,则将所述下载图片缩放为所述缩放比例。进一步的,所述图片处理任务从所述下载地址下载并解码得到下载图片,具体包括:检查图片缓存中是否有与所述下载地址关联的已解码图片,如果有,则从所述图片缓存中获取与所述下载地址关联的已解码图片作为下载图片,否则;检查系统缓存中是否有与所述下载地址关联的未解码图片,如果有,则从所述系统缓存中获取与所述下载地址关联的未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片,否则;从所述下载地址下载得到未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片。更进一步的,图片处理任务还包括:如果所述展示选项包括图片缓存指示,则将所述已解码图片缓存在所述图片缓存;如果所述展示选项包括系统缓存指示,则将所述未解码图片缓存中所述系统缓存。再进一步的,所述主线程单元在构建图片处理任务后,将图片处理任务与图片处理任务的视图容器标识所指示的视图容器关联,所述主线程单元还包括视图容器刷新模块;所述视图容器刷新模块,用于:当视图容器被刷新,则从线程池的任务队列中,取消被刷新的视图容器所关联的图片处理任务,重新执行图片处理任务构建模块。本发明通过主线程显示视图容器,然后构建下载图片及处理图片的图片处理任务,由于图片处理任务并不是立刻执行,而是由线程池中的图片处理线程执行,因此,对下载图片及处理图片的动作,都能得到线程池的统一管理。同时,线程池中的图片处理线程数量是有限的,一个图片处理线程只有在执行完一个图片处理任务后,才能执行下一个图片处理任务,系统资源的使用能够通过线程池中的图片处理线程数量进行限制,因此,本发明的图片显示方法,能够避免过度使用导致系统性能下降。附图说明图1a为本发明一种移动终端图片显示方法主线程的工作流程图;图1b为本发明一种移动终端图片显示方法图片处理线程的工作流程图;图2为主线程显示视图容器示意图;图3为本发明一种移动终端图片显示方法的展示示意图;图4a为本发明最佳实施例主线程的工作流程图;图4b为本发明最佳实施例图片处理线程的工作流程图;图5为本发明一种移动终端图片显示系统的结构模块图;图6为本发明移动终端的结构框图。具体实施方式下面结合附图和具体实施例对本发明做进一步详细的说明。本发明一种移动终端图片显示方法的工作流程图,该方法包括:主线程以及至少一个由线程池维护管理的图片处理线程,具体来说:所述主线程执行如图1a所示的工作流程图,包括:步骤S111,包括:在移动终端屏幕上显示至少一个视图容器;步骤S112,包括:获取每个视图容器的下载地址、展示选项和指示所述视图容器的视图容器标识,采用每个视图容器的下载地址、展示选项和视图容器标识作为参数构建图片处理任务,将图片处理任务加入管理所述图片处理线程的线程池的任务队列;步骤S113,包括:响应于所述图片处理线程发送的通知,将所述图片处理线程返回的处理后的图片展示在对应的显示位置;所述图片处理线程执行如图1b所示的工作流程图:步骤S121,包括:从所述线程池的任务队列中获取一个图片处理任务并执行,图片处理任务从所述下载地址下载并解码得到下载图片,根据所述展示选项,对所述下载图片进行处理得到处理后的图片,将所述处理后的图片在移动终端屏幕上的显示位置,设置为所述视图容器标识所指示的视图容器在移动终端屏幕上的相对位置;步骤S122,包括:所述图片处理任务执行完毕后通知所述主线程,向所述主线程返回设置有显示位置的所述处理后的图片。本发明的移动终端图片显示方法用于在移动终端上面显示图片,例如:壁纸应用、云端照片管理应用等。这类应用需要展示大量的图片。例如图3所示为一种壁纸应用在屏幕20上的展示效果,在每个视图容器21上需要显示一幅从网络上下载的图片的缩略图22。当用户打开应用,则会创建主线程,以及一个线程池,该线程池维护管理至少一个图片处理线程,优选地,图片处理线程为10个。主线程处理前述步骤S111-S113,在步骤S111中,主线程负责在屏幕20上显示至少一个视图容器21,效果如图2所示,然后,在步骤S112中获取每个视图容器的下载地址、展示选项和视图容器标识,其中,下载地址指的是该视图容器所要显示的图片的下载地址,展示选项为图片在该视图容器中采用什么方式进行展示,下载地址和展示选项由主线程从配置文件中获取。视图容器标识由移动终端的操作系统生成,用于指示该视图容器,视图容器在屏幕中所显示的相对位置能够通过视图容器标识从操作系统中获取。步骤S112为每个要展示图片的视图容器构建一个图片处理任务,并将该图片处理任务加入线程池的任务队列中。线程池中的空闲的图片处理线程将会执行步骤S121,从任务队列中取出一个图片处理任务,并执行图片处理任务的内容,此时该图片处理线程将置为忙碌,从而根据图片处理任务下载图片、解码图片、对图片进行处理并最终得到处理后的图片,在执行完毕后执行步骤S122,通知主线程后,主线程将执行步骤S113处理后的图片展示在相应的处理容器中,从而得到如图3所示的展示示意图。图片处理线程在处理完毕图片处理任务后将重新置为空闲,并继续执行步骤S121。由于线程池中的图片处理线程数量有限且可控,因此,通过调整图片处理线程的数量则能够控制该应用对系统资源的消耗,从而避免资源过度使用导致系统性能下降。另外,本发明通过主线程和图片处理线程,将图片下载处理,与图片最终的显示分开,因此主线程会很快的显示出至少一个视图容器,然后图片处理线程再分别下载处理图片并最终显示,因此逻辑清晰,管理方便。最后,由于将图片下载处理均由一个统一的任务处理,因此不会产生冗余重复的代码,质量更加可靠。在其中一个实施例中,所述根据所述展示选项,对所述下载图片进行处理得到处理后的图片,具体包括:如果所述展示选项包括显示动画,则将所述下载图片处理为动态图片,将所述动态图片作为处理后的图片;如果所述展示选项包括特定形状,则将所述下载图片裁剪为所述特定形状;如果所述展示选项包括缩放比例,则将所述下载图片缩放为所述缩放比例。图片可以是动画,同时也可以根据需求裁剪为特定形状,例如圆形、方形等,可以根据缩放比例进行缩放。动画处理、图片裁剪以及图片缩放可以采用现有技术实现,例如动画处理可以采用渐显动画显示方式实现,裁剪则可以将图片与特定形状的重叠部分以外的像素删除的方式实现。图片缩放则是根据缩放比例将图片进行缩放,例如将图片缩放为缩略图。在其中一个实施例中,所述图片处理任务从所述下载地址下载并解码得到下载图片,具体包括:检查图片缓存中是否有与所述下载地址关联的已解码图片,如果有,则从所述图片缓存中获取与所述下载地址关联的已解码图片作为下载图片,否则;检查系统缓存中是否有与所述下载地址关联的未解码图片,如果有,则从所述系统缓存中获取与所述下载地址关联的未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片,否则;从所述下载地址下载得到未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片。由于图片的大小较大,因此一般会进行编码压缩,例如jpeg编码、tif编码、gif编码等。不同的编码方式有不同的压缩率。由于不同的编码方式有不同的编码协议,因此在下载以后,需要采用相应的解码协议进行解码,从而得到可以在屏幕显示的解码图片。本实施例所提供的两种缓存,一种是图片缓存,用于缓存已解码图片,另一种是系统缓存,用于缓存未解码图片。由于已解码图片占用空间较大,因此存放的数量有限,但同时因为不需要解码,因此能直接显示。而未解码图片占用空间较小,但需要进一步解码后显示。本实施例在下载图片前,先分别从图片缓存和系统缓存中查找是否有相关图片,从而能进一步提高显示速度。在其中一个实施例中,图片处理任务还包括:如果所述展示选项包括图片缓存指示,则将所述已解码图片缓存在所述图片缓存;如果所述展示选项包括系统缓存指示,则将所述未解码图片缓存中所述系统缓存。对于较常用的图片,本实施例还可以通过设置缓存指示,将下载图片保存在缓存中,以便后续访问时能提供显示速度。在其中一个实施例中,所述主线程在构建图片处理任务后,将图片处理任务与图片处理任务的视图容器标识所指示的视图容器关联,所述主线程还执行视图容器刷新步骤;所述视图容器刷新步骤,包括:当视图容器被刷新,则从线程池的任务队列中,取消被刷新的视图容器所关联的图片处理任务,重新执行步骤S112。当用户重新刷新视图容器,例如在壁纸应用中,用户开始选定了一组图片,此时主线程就会为每个视图容器生成一个图片处理任务并加入线程池的任务队列。但用户又选择另外一组图片,此时主线程则执行视图容器刷新步骤,取消相应的图片处理任务。如图4a所示为本发明最佳实施例主线程的工作流程图,移动终端优选为智能手机,具体包括:步骤S411,请求显示图;当有图片显示任务时,先构造一个图片显示任务DisplayTask,该任务包含ImageView、url等图片显示的基础信息,具体来说:调用线程池的单例请求展示图片函数:EUIDisplayer.getInstance().display(imageView,url,displayOptions),其中:imageView为视图容器view的标识,url为展示的图片链接,displayOptions为展示的参数;然后,构造出展示任务DisplayTask:DisplayTasktask=newDisplayTask(imageView,url,options,onCompleteListener,onProgressListener)步骤S412,用展示任务构造出一个Runnable接口,以便线程池执行;构造出DisplayRunnable,DisplayRunnablerunnable=newDisplayRunnable(task,mRunningTasks);步骤S413,将展示任务加入线程池的任务队列,步骤S414,响应图片处理线程的通知,显示图片。如图4b所示为本发明最佳实施例图片处理线程的工作流程图,移动终端优选为智能手机,具体包括:步骤S421,当线程池有空闲的图片处理线程时,从任务队列中选取一个展示任务执行,具体来说:用线程池执行DisplayRunnable,Future<Boolean>fullImageFuture=mFullImageExecutor.submit(fullImageCallable);步骤S422,如果显示任务被取消,则通知显示任务完毕,例如在展示过程中,对应的ImageView被刷新,那么则取消旧的展示任务;步骤S423,读取DisplayTask中的参数,判断是否需要延迟展示,当需要延时展示,则调用:Thread.sleep(task.getOptions().getDelay()),延迟当前线程;步骤S424,判断图片是否存在于BitmapMemoryCache中,BitmapMemoryCache用于存放已解码图片,如果存在直接获取图片文件的byteArray,执行步骤S427,否则执行步骤S425,具体通过调用:BitmapMemoryCache.getInstance().exists(task.getUrl())检查图片是否存在于BitmapMemoryCache中;步骤S425,判断是否存在于MemoryCache或DiskCache中,如果存在,则从MemoryCache或DiskCache中获取,执行步骤S427,否则执行步骤S426,具体通过调用getByteArrayFromCache函数获取;步骤S426,如果图片不存在于缓存中,则从网络获取图片,然后将从网络获取到的图片文件,例如jpg图片文件,解码成可以直接显示的Bitmap;步骤S427,读取DisplayTask的缓存配置,根据需求将图片分别缓存到BitmapCache和/或ByteArrayCache中,ByteArrayCache即MemoryCache或DiskCache;步骤S428,读取DisplayTask的动画设置,如果需要播放显示动画,则生成显示动画,例如渐现动画,播放显示动画;步骤S429,根据配置生成特定的图片形状,例如圆形头像;步骤S4210,通过mainLoop的handler在主线程显示图片。如图5所示为本发明一种移动终端图片显示系统的结构模块图,包括:主线程单元510以及至少一个由线程池520维护管理的图片处理线程单元530;所述主线程单元510,包括:背景创建模块511,用于:在移动终端屏幕上显示至少一个视图容器;图片处理任务构建模块512,用于:获取每个视图容器的下载地址、展示选项和指示所述视图容器的视图容器标识,采用每个视图容器的下载地址、展示选项和视图容器标识作为参数构建图片处理任务,将图片处理任务加入管理所述图片处理线程单元530的线程池520的任务队列;图片展示模块513,用于:响应于所述图片处理线程单元发送的通知,将所述图片处理线程单元返回的处理后的图片展示在对应的显示位置;所述图片处理线程单元530,包括:任务执行模块531,用于:从所述线程池的任务队列中获取一个图片处理任务并执行,图片处理任务从所述下载地址下载并解码得到下载图片,根据所述展示选项,对所述下载图片进行处理得到处理后的图片,将所述处理后的图片在移动终端屏幕上的显示位置,设置为所述视图容器标识所指示的视图容器在移动终端屏幕上的相对位置;通知模块532,用于:所述图片处理任务执行完毕后通知所述主线程单元,向所述主线程单元510返回设置有显示位置的所述处理后的图片。在其中一个实施例中,所述根据所述展示选项,对所述下载图片进行处理得到处理后的图片,具体包括:如果所述展示选项包括显示动画,则将所述下载图片处理为动态图片,将所述动态图片作为处理后的图片;如果所述展示选项包括特定形状,则将所述下载图片裁剪为所述特定形状;如果所述展示选项包括缩放比例,则将所述下载图片缩放为所述缩放比例。在其中一个实施例中,所述图片处理任务从所述下载地址下载并解码得到下载图片,具体包括:检查图片缓存中是否有与所述下载地址关联的已解码图片,如果有,则从所述图片缓存中获取与所述下载地址关联的已解码图片作为下载图片,否则;检查系统缓存中是否有与所述下载地址关联的未解码图片,如果有,则从所述系统缓存中获取与所述下载地址关联的未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片,否则;从所述下载地址下载得到未解码图片,将所述未解码图片解码后得到的已解码图片作为下载图片。在其中一个实施例中,图片处理任务还包括:如果所述展示选项包括图片缓存指示,则将所述已解码图片缓存在所述图片缓存;如果所述展示选项包括系统缓存指示,则将所述未解码图片缓存中所述系统缓存。在其中一个实施例中,所述主线程单元在构建图片处理任务后,将图片处理任务与图片处理任务的视图容器标识所指示的视图容器关联,所述主线程单元还包括视图容器刷新模块;所述视图容器刷新模块,用于:当视图容器被刷新,则从线程池的任务队列中,取消被刷新的视图容器所关联的图片处理任务,重新执行图片处理任务构建模块。如图6所示为本发明移动终端的结构框图,其主要包括:处理器601、存储器602及通信组件603等。一般来说,本发明的移动终端优选为智能手机等。其中存储器602中存储前述方法的具体代码,由处理器601具体执行,通信组件603进行通信以下载图片。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1