一种加载列表框中的图片的方法和装置制造方法

文档序号:6505102阅读:145来源:国知局
一种加载列表框中的图片的方法和装置制造方法
【专利摘要】本发明公开了一种加载列表框中的图片的方法和装置。该方法包括:在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测;当监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置;根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片;只加载所确定的图片到内存中,并在滚动窗口中显示。本发明提供的技术方案能够解决现有的在列表框中加载图片时存在的系统内存资源消耗过大的问题。
【专利说明】一种加载列表框中的图片的方法和装置

【技术领域】
[0001]本发明涉及智能移动终端的图片显示【技术领域】,特别是涉及一种加载列表框中的图片的方法和装置。

【背景技术】
[0002]现有的智能系统(如Windows Phone)下的列表框(ListBox)的滚动窗口(ScrollViewer)的可视区域中显示图片时,需要将ListBox中图片全部加载。但是并不是所加载的全部图片用户都能浏览到,同步加载用户没有浏览的图片导致系统资源消耗过大,过大的占用智能终端的系统内存。
[0003]综上所述,现有的智能终端中在列表框中加载图片时存在的系统内存资源消耗过大的问题。


【发明内容】

[0004]本发明提供的一种加载列表框中的图片的方法和装置,以解决现有的智能终端中在列表框中加载图片时存在的系统内存资源消耗过大的问题。
[0005]为达到所述目的,本发明的技术方案是这样实现的:
[0006]本发明公开了一种加载列表框中的图片的方法,该方法包括:
[0007]在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测;
[0008]当监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置;
[0009]根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片;
[0010]只加载所确定的图片到内存中,并在滚动窗口中显示。
[0011]在上述方法进一步包括:
[0012]从内存中删除已不在滚动窗口的可视区域内的图片。
[0013]上述方法进一步包括:在列表框绑定数据源时,在内存中初始化图片数据源。
[0014]在上述方法中,所述对滚动窗口的状态进行监测包括:
[0015]增加列表框的滚动窗口状态改变事件;
[0016]通过监测该滚动窗口状态改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
[0017]在上述方法中,所述确定与滚动窗口的可视区域相对应的图片包括:
[0018]令对应区域为:覆盖滚动窗口的可视区域,并超出滚动窗口的可视区域第一预设阀值的区域;
[0019]该对应区域内图片即为与滚动窗口的可视区域相对应的图片。
[0020]在上述方法中,所述确定与滚动窗口的可视区域相对应的图片包括:
[0021]取Y轴坐标值小于滚动窗口的可视区域的高度值与第二预设阀值的和,并且Y轴坐标值大于O的图片。
[0022]本发明还公开了一种加载列表框中的图片的装置,该装置包括:
[0023]监测单元,用于在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测;
[0024]图片确定单元,用于在所述监测单元监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置,并根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片;
[0025]加载显示单元,用于只加载所述图片确定单元所确定的图片到内存中,并在滚动窗口中显示。
[0026]在上述装置中,该装置进一步包括:
[0027]回收单元,用于从内存中删除已不在滚动窗口的可视区域内的图片。
[0028]在上述装置中,所述监测单元,用于增加列表框的滚动窗口状态改变事件,通过监测该滚动窗口状态改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
[0029]在上述装置中,所述图片确定单元,用于设置对应区域为覆盖滚动窗口的可视区域并超出滚动窗口的可视区域第一预设阀值的区域,取该对应区域内的图片作为与滚动窗口的可视区域相对应的图片;
[0030]或者,
[0031]所述图片确定单元,用于取Y轴坐标值小于滚动窗口的可视区域的高度与第二阀值的和,并且Y轴坐标值大于O的图片。
[0032]综上所述,在本发明提供的技术方案中,在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测;当监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置;根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片;只加载所确定的图片到内存中,并在滚动窗口中显示。本发明提供的技术方案在列表框中加载数据源时,只加载可视区域内的图片,而不会加载用户可能不会浏览的图片,因此能够解决现有技术中的在列表框中加载图片时,需要对图片全部加载导致的系统内存资源消耗过大的问题。

【专利附图】

【附图说明】
[0033]图1是本发明中一种实施例中的加载列表框中的图片的方法的流程图;
[0034]图2是本发明中一种具体实施例中的加载列表框中的图片的方法的流程图;
[0035]图3是本发明中一种实施例中的加载列表框中的图片的装置结构示意图。

【具体实施方式】
[0036]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0037]图1是本发明中一种实施例中的加载列表框中的图片的方法的流程图。如图1所示,该方法包括:
[0038]步骤101,在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测。
[0039]在本步骤中,绑定的数据源为需要显示在列表框的滚动窗口中的除图片以外的文字等内容。
[0040]在本发明的一种实施例中,步骤101进一步包括:在列表框绑定数据源时,进一步在内存中初始化图片数据源。
[0041]由于在列表框的滚动窗口停止滚动时加载图片,故在本发明中还需要对滚动窗口的状态进行实时监测,以便在列表框的滚动窗口停止滚时,可以及时的加载图片,在本发明的一个实施例中,对滚动窗口的状态进行监测具体包括步骤1011和步骤1012:
[0042]步骤1011,增加列表框的滚动窗口状态改变事件;
[0043]步骤1012,通过监测该滚动窗口状态改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
[0044]在上述步骤1011和1012中,在列表框的滚动窗口中增加滚动窗口状态改变事件,当列表框的滚动窗口的状态发生改变时,例如从正在滚动状态切换到停止滚动状态,或者从停止滚动状态切换到滚动状态时,该滚动窗口改变事件中的状态名称会发生相应的变化。故可以通过监测该滚动窗口状态改变事件的状态名称的改变,实时的获取到该列表框的滚动窗口的当前状态,是正在滚动状态,还是停止滚动状态。
[0045]步骤102,当监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置。
[0046]在本发明的一种实施例中,在步骤102中,当列表框的滚动窗口停止滚动时,通过获取列表框中的各个项中的图片相对于滚动窗口的位置的坐标的方式,获取列表框中的各个项中的图片相对于滚动窗口的位置。
[0047]步骤103,根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片。
[0048]在本发明的一种实施例中,令对应区域为:覆盖滚动窗口的可视区域,并超出滚动窗口的可视区域第一预设阀值的区域;该对应区域内的图片即为与滚动窗口的可视区域相对应的图片。
[0049]在本发明的一个具体实施例中,确定与滚动窗口的可视区域相对应的图片具体可以为:在绑定的数据源中,取Y轴坐标值小于滚动窗口的可视区域的高度值与第二预设阀值的和,并且Y轴坐标值大于O的图片。其中,Y轴是指列表框中的每个项中图片相对于滚动窗口的坐标,如果有图片在滚动窗口的可视区域之上时,Y轴坐标值为负数。
[0050]例如:滚动窗口的高度值为800时,如果图片的Y轴坐标值为-100,则该图片位于滚动视图的可视区域上;如果图片的Y轴坐标值为500,则该图片位于滚动视图的可视区域内;如果图片的Y轴坐标值为1000,则该图片位于滚动视图的可视区域之下。
[0051]在上述的两个实施例中,第一预设阀值和第二预设阀值分别可以根据实际情况而定。第一预设阀值和第二预设阀值可以是相同的值,也可以是不同的值。
[0052]步骤104,只加载所确定的图片到内存中,并在滚动窗口中显示。
[0053]在本发明的较佳实施例中,为了节省系统内存,在步骤104之后,还包括:从内存中删除已不在滚动窗口的可视区域内的图片。这里,将之前已经加载过的并且当前不在滚动窗口的可视区域内的图片(即已经滑出滚动窗口的图片)删除以释放内存,达到对智能终端内存资源有效利用。
[0054]图2是本发明中一种具体实施例中的加载列表框中的图片方法的流程图。为了叙述方便,在本实施例中具体用windows phone为操作系统的智能终端为例进行详细说明,实际中并不局限于windows phone操作系统以及该操作系统所开放的方法类。如图2所示,该方法包括:
[0055]步骤201,列表框绑定数据源。
[0056]步骤202,在内存中初始化图片数据源。
[0057]在本步骤中,在列表框中绑定数据源之后,在智能终端的内存中对所绑定的图片数据源进行初始化,指定图片数据源为NULL,具体为:在ListBoxItem类(继承BaseffithImageContent)中构建IU元素(BuildUI)方法中初始化非虚拟化中的图片。
[0058]步骤203,增加列表框的滚动窗口状态改变事件。
[0059]步骤204,通过监测滚动窗口改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
[0060]在步骤203和步骤204中,通过增加继承了内容控件的图像内容基础类,然后在加载事件中查找滚动窗口,获取滚动窗口中的滚动状态对象;在滚动状态改变事件中,该滚动状态对象的状态名称会发生变化;当监测到滚动状态对象的状态名称为停止滚动时,判定当前滚动窗口的状态为停止滚动状态。
[0061]在本发明的一种实施例中,步骤203和步骤204可以具体为:
[0062]将滚动窗口状态改变事件封装在一个继承内容控件ContentControl的泛型抽象类 BaseWithImageContent 中;
[0063]由该泛型抽象类在列表框的Loaded事件中查找列表框的滚动窗口 ScrollViewer控件,获取可视对象中位于集合索引O位置的名称为滚动状态的子可视对象,在该子可视对象的当前状态(CurrentStateChanged)过渡到不同状态事件中时,判断最新状态名称(NewState.Name)的取值为NotScroling,即为停止滚动状态。
[0064]步骤205,根据列表框中的各个项中的图片相对于滚动窗口的位置,来确定与滚动窗口的可视区域相对应的图片。
[0065]在步骤205中,设置的对应区域为:覆盖滚动窗口的可视区域,并超出滚动窗口的可视区域预设阀值的区域;该对应区域内图片即为与滚动窗口的可视区域相对应的图片。
[0066]具体为:通过获取列表框中的各个项中的图片相对与滚动窗口的位置坐标,获取到的坐标计算各个项中的图片相对与滚动窗口的相对位置。
[0067]其中,获取图片相对ScrollViewer的位置的坐标的操作,具体可以通过如下操作实现:
[0068]Point point=image.TransformToVisual(this.scrollViewer).Transform(newPoint (0.0, 0.0)) o
[0069]在绑定的图片数据源中取Y轴坐标值小于滚动窗口的可视区域的高度值与第二预设阀值的和,并且Y轴坐标值大于O的图片。将取得的图片作为与滚动窗口的可视区域相对应的图片。由于Y轴坐标是指列表框中的每个项中图片相对于滚动窗口的坐标,如果有图片在滚动窗口的可视区域之上时,这个Y轴坐标值为负数,故需要设置Y轴的坐标值大于O。
[0070]步骤206,只加载所确定的图片到内存中,并在滚动窗口中显示。
[0071]在步骤206中,根据确定的与滚动窗口的可视区域相对应的图片,在滚动窗口中显示该确定的图片。
[0072]步骤207,从内存中删除已不在滚动窗口的可视区域内的图片。
[0073]为了节约智能终端的内存资源,将不在滚动窗口的可视区域内的图片在内存中删除。在本步骤中,为了更好的节约系统内存以及下载的图片时的流量。根据在步骤206中确定的与滚动窗口的可视区域相对应的图片,在内存中只加载该对应的图片,当滚动窗口滚动时,将已经加载过的并且不在滚动窗口的可视区域内的图片删除以释放内存,达到对智能终端内存资源有效利用。其中,删除已不再滚动窗口的可视区域的图片的操作具体可以通过如下操作实现 this.1mage=Visibility.Collapsed。
[0074]基于上述实施例给出本发明的加载列表框中的图片的装置结构。
[0075]图3是本发明中一种实施例中的加载列表框中的图片的装置结构示意图。如图3所示,该装置包括:
[0076]监测单元301,用于在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测;
[0077]图片确定单元302,用于在监测单元监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置,并根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片;
[0078]加载显示单元303,用于只加载图片确定单元所确定的图片到内存中,并在滚动窗口中显示。
[0079]在本发明的一种实施例中,上述装置还包括:回收单元304,用于从内存中删除已不在滚动窗口的可视区域内的图片。
[0080]在本发明的一种实施例中,监测单元301,用于增加列表框的滚动窗口状态改变事件,通过监测该滚动窗口状态改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
[0081]在本发明的一种实施例中,图片确定单元302,用于设置对应区域为覆盖滚动窗口的可视区域并超出滚动窗口的可视区域第一预设阀值的区域,取该对应区域内的图片作为与滚动窗口的可视区域相对应的图片。
[0082]在本发明的一种实施例中,图片确定单元302,用于取Y轴坐标值小于滚动窗口的可视区域的高度与第二阀值的和,并且Y轴坐标值大于O的图片。
[0083]综上所述,在本发明提供的技术方案中,在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测;当监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置;根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片;只加载所确定的图片到内存中,并在滚动窗口中显示。本发明提供的技术方案在列表框中加载数据源时,只加载显示区域中的图片,因此能够解决现有技术中的在列表框中加载图片时,需要对图片全部加载导致的系统内存资源消耗过大的问题。
[0084]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种加载列表框中的图片的方法,其特征在于,该方法包括: 在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测; 当监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置; 根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片; 只加载所确定的图片到内存中,并在滚动窗口中显示。
2.如权利要求1所述的方法,其特征在于,该方法进一步包括: 从内存中删除已不在滚动窗口的可视区域内的图片。
3.如权利要求1所述的方法,其特征在于,该方法进一步包括:在列表框绑定数据源时,在内存中初始化图片数据源。
4.如权利要求1所述的方法,其特征在于,所述对滚动窗口的状态进行监测包括: 增加列表框的滚动窗口状态改变事件; 通过监测该滚动窗口状态改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
5.如权利要求1所述的方法,其特征在于,所述确定与滚动窗口的可视区域相对应的图片包括: 令对应区域为:覆盖滚动窗口的可视区域,并超出滚动窗口的可视区域第一预设阀值的区域; 该对应区域内图片即为与滚动窗口的可视区域相对应的图片。
6.如权利要求1所述的方法,其特征在于,所述确定与滚动窗口的可视区域相对应的图片包括: 取Y轴坐标值小于滚动窗口的可视区域的高度值与第二预设阀值的和,并且Y轴坐标值大于O的图片。
7.一种加载列表框中的图片的装置,其特征在于,该装置包括: 监测单元,用于在列表框绑定数据源时,对列表框的滚动窗口的状态进行监测; 图片确定单元,用于在所述监测单元监测到滚动窗口的停止滚动状态时,获取列表框中的各个项中的图片相对于滚动窗口的位置,并根据列表框中的各个项中的图片相对于滚动窗口的位置,确定与滚动窗口的可视区域相对应的图片; 加载显示单元,用于只加载所述图片确定单元所确定的图片到内存中,并在滚动窗口中显示。
8.如权利要求7所述的装置,其特征在于,该装置进一步包括: 回收单元,用于从内存中删除已不在滚动窗口的可视区域内的图片。
9.如权利要求7所述的装置,其特征在于, 所述监测单元,用于增加列表框的滚动窗口状态改变事件,通过监测该滚动窗口状态改变事件的状态名称的改变,来获知滚动窗口的状态的改变。
10.如权利要求7所述的装置,其特征在于, 所述图片确定单元,用于设置对应区域为覆盖滚动窗口的可视区域并超出滚动窗口的可视区域第一预设阀值的区域,取该对应区域内的图片作为与滚动窗口的可视区域相对应的图片; 或者, 所述图片确定单元,用于取Y轴坐标值小于滚动窗口的可视区域的高度与第二阀值的和,并且Y轴坐标值大于O的图片。
【文档编号】G06F9/44GK104252350SQ201310269142
【公开日】2014年12月31日 申请日期:2013年6月28日 优先权日:2013年6月28日
【发明者】罗林波 申请人:北京新媒传信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1