一种完整展示资讯信息的排版计算方法

文档序号:8282260阅读:159来源:国知局
一种完整展示资讯信息的排版计算方法
【技术领域】
[0001]本发明涉及智能手机阅读软件的图片与文字排版技术领域,特别地涉及一种互联网应用软件的图片与文字排版的技术方法。
[0002]
【背景技术】
[0003]随着智能手机的普及,众多手机资讯类软件进入了用户的视线,资讯类软件多以文字或文字加图片形式出现。但是呈现出类似的视觉背后却是各自独特的技术,一种好的排版技术,不仅能让软件的扩展性良好,还能有良好的用户体验。目前市场上瀑布流排版的软件层出不穷,但是瀑布流排版的技术各不相同,这种瀑布流的排版技术有良好的扩展性、流畅性以及独特性。
[0004]瀑布流排版的设计,是不规则排列而产生的美感,特别的针对图片的处理(尽最大可能不截取图片,但是兼不规则和整齐于一身)。针对新闻,广告类资讯推广视觉效果良好。瀑布流排版的技术,简单的布局也可以实现,但是扩展性差、兼容性也不好。
[0005]目前设置图片与文字的瀑布流排版技术的一种方法是:首先设置瀑布流一页中每一个资讯块的内容,然后根据这一页各个资讯块的图片比例大小确定是否通栏显示,剩下的不通栏显示的资讯块根据资讯块的高度确定在排列两列中的第一列还是第二列,最后使两列齐平,再把这一页排列好的资讯添加到另一个视图类中,继续添加下一页,如此循环,就形成了瀑布流。

【发明内容】

[0006]本发明主要提供一种瀑布流排版的一种技术实现方法,以解决简单布局实现的瀑布流无法轻松扩展的缺点,从而可以提升开发进度以及增加设计的灵活度,使用户有更好的阅读体验。
[0007]为解决上述问题本发明提供如下技术方案:
1、定义瀑布流各个资讯块显示的相关属性
为瀑布流资讯块定义属性,瀑布流资讯块布局的模式(1、文字模式2、图文模式),资讯块的id、左上角的X坐标、左上角的y坐标,资讯块的宽、高,资讯块中图片的宽、高,资讯的标题、简介、图片的下载路径,资讯的来源、发表时间,是否在两列中的左边一列,是否通栏显不等。
[0008]2、确定瀑布流一页数据的10个资讯块的显示顺序(一页的资讯块数据可以根据具体情况自由定义),并且让瀑布流一页中资讯块布局两列的底部齐平。
[0009]【具体实施方式】:
一、确定各个资讯块的显示属性
设置资讯块中的各个属性的值,资讯中有图片就用图文模式显示,否则就用纯文字模式显示。根据每个资讯块的图片的大小比例,确定是否通栏显示(一行仅有一列),且每一页10个资讯块,其中最多只有一个资讯块是通栏显示,其他的资讯块都是两列显示,且资讯块之间的间隙是固定的,因此可以计算出通栏显示跟两列显示的资讯块的宽和高(图片的宽高比例不一,资讯块的高度可以根据图片的比例和图片的宽度计算得出)。当资讯块的图片的高度超过屏幕的高度时,则设置资讯块的图片的高度值为屏幕的高度值。
[0010]图片的宽高比例=资讯块的宽/资讯块的高;
通栏显示资讯块的宽=屏幕的宽-2*资讯块之间的间隙;
通栏显示资讯的高=通栏资讯块的宽/图片的宽高比例+图片下方的固定文字块的高(根据文字多少确定文字块的高);
两列显示的资讯的宽=(屏幕的宽-3*资讯块之间的间隙)/ 2;
两列显示的资讯的高=两列显示的资讯的宽/图片的宽高比例;
二、确定各个资讯块的排列顺序
用背包算法对10条资讯中除了通栏显示的资讯块之外其他所有的资讯块进行排序,使得两列的高度相差最小,也就是:选择出总高度最优的几个资讯块放在两列中的其中一列,并且使这一列的高度与两列的总高度的一半高度值相差最小。
[0011]如果第η个资讯块的高度大于两列中所有资讯块的一半的高度,那么最优解肯定存在于前η-1个资讯块中,如果第η个资讯块的高度不大于两列中所有资讯块的一半的高度,那么要么是包含第η个资讯块,要么是不包含第η个资讯块的最优解,取两者的最大值,最后以此类推,得出两列中第一列的几个资讯块的最佳组合。
[0012]三、确定每个资讯块的摆放位置
依次根据资讯块的宽、高,屏幕的宽、高,资讯宽之间的间隙,计算出通栏显示的资讯块的左上角的X轴的坐标位置以及左上角的y轴的坐标位置,再根据上一步中得出的最佳组合的几个资讯块放第一列,剩下的几个资讯块放第二列的原则依次计算出两列中的每个资讯块的左上角的X轴的坐标位置和左上角的I轴的坐标位置。
[0013]四、拉伸两列中较短的一列,让两列资讯的底部齐平,使界面更美观
首先比较出两列的高度差值,再得到较短一列的排在最后面的资讯块,拉长两列的高度差值到较短的资讯块中的图片上,较短的资讯块的总高度值会相应增加。这样两列的底部就会齐平,而且拉伸的高度很小也不至于图片会变形。
[0014]2、在PiWindowView中得到每一个资讯块对应的布局,并测量出每一个资讯块的大小,确定每一个资讯块的显示位置
在PiWindowView中得到10个资讯块后确定相应的布局(可以是图文模式,文字模式) 在PiWindowView中的onMeature方法中测量出每个资讯块的宽度和高度,
在Layout方法中设置每个资讯块所在的位置。
[0015]3、设置 PiWindowView 在 StrenchListView 中的位置
StrenchListView 类继承 ViewGroup 类,将 PiWindowView 中的数据添加到StrenchListView中的LinkedList集合中,LinkedList集合中最多只有3个PiffindowView,也就是3页数据,这3页数据会静态保存在内存中,下拉可以看到前面拉到的数据,当超过3页数据时就手动清理3页前的数据。显示的图片也是需要手动清理,否则很容易报内存溢出的异常。图片用图片加载管理器,内存超过固定值会回收图片。在onMeature方法中测量每个PiWindowView的宽高,然后在onLayout方法中设置每个PiffindowView 的位置。
[0016]4、将 StrenchListView 添加到 PiScrollView 中,在 PiScrollView 中主要处理一些刷新后数据更新的操作
从服务器获取瀑布流需要展示的数据,一页10条,设置StrenchListView里面PiffindowView 中的资讯块的数据,将 StrenchListView 添加到 PiScrollView 中。
[0017]5、在PiScrollView的父类XScrollView中做一些相关上拉刷新的操作 XScrollView继承ScrollView,可以处理一些滑动界面跟自动滚动界面的相关操作。
在这个类中注册触发更新和加载更多数据的监听事件。还有一些上拉刷新状态改变的一些处理。当操作者上拉超过固定距离,就在底部添加FooterView加载下载数据的布局,监听到数据后就刷新界面,显示下一页数据,依次上拉循环不断刷新,不断更新界面,就形成了瀑布流的界面。
【主权项】
1.一种排版的方法,应用需要使用瀑布流风格展示信息的任何终端,其特征在于,所述方法包括: 对任意终端的数字显示屏进行区域划分,每次获取到10条信息组合时,已最终底部齐平为目的,尽最大可能不截图图片(即按照原图比例等比缩放),若要实现此要求,首先我们应该按照屏幕的宽度来划分区域,屏幕宽的一半即每个图片的实际展示宽度,然后根据原图比例计算出图片实际展示呈现的高度,保证此图片是不会压缩变形并且不做裁剪,同时保证与其他模块没有任何重叠,每个瀑布流的信息块的内容布局可以自由变换,只要总高度确定即可每个瀑布流的信息可点击。
2.根据权利要求1所述的方法,其特征还包括: 用户每次从网络拉取新的信息时,连接在后面的新的一页的顶部和底部始终是齐整的。
3.根据权利要求1所述的方法,其特征还包括: 瀑布流的图片信息展示两列,始终是错开的,以一种凌乱美展示,并且因为顶部和顶部是齐平的,所以顶部和底部还能放置宽度为屏幕宽的大通栏信息,已达到展示重要信息的目的。
4.根据权利要求2所述的方法,其特征在于: 如果按照背包算法排列出两列信息块最终无法齐整,我们需要计算出长列与短列的差值,如果差值小于某个范围,把此差值平均相加到短列的每一个模块中,如果差值大于某个范围,则需要把此差值除以2,然后平均相加到短列,相减到长列,如果差值太大,则是其中每个信息的图片过高的原因,我们对图片计算出来的实际展示高度超过屏幕一半的进行截取,已达到视觉上的平衡。
5.根据权利要求3所述的方法,其特征在于: 如果拉取的信息里面有服务器指定的需要在顶部或者底部通栏展示的,我们则直接把此信息按照通栏布局,放置在顶部或者底部,如果未指定展示,我们会放置图片宽度大于某个范围,并且图片的宽高比例最近某个值的信息块,通栏展示可以灵活多变的布局,特别的,当某个信息块的图片宽或者高小于某个范围值时,我们队此模块做文字模块处理,可以灵活控制此信息的布局,以根除图片展示模糊的问题。
6.根据权利要求4,5所述的方法,其特征在于,利用背包算法达到一个目的:有一个容量固定的背包(这里为两列,固定高度为所有信息模块总高度的和的一半),有η个重量固定的物品(这里为信息模块,高度是固定的),我们需要得出一个组合,使得此组合放入此背包最适合,即最接近一半的高度,于是剩余的组合也是最接近一半的高度,于是得到两列的高度相差最小。
【专利摘要】本发明公开了一种完整展示资讯信息的排版计算方法,以解决简单布局实现的瀑布流无法轻松扩展的缺点,从而可以提升开发进度以及增加设计的灵活度,使用户有更好的阅读体验,定义瀑布流各个资讯块显示的相关属性,确定各个资讯块的排列顺序,确定每个资讯块的摆放位置,拉伸两列中较短的一列,让两列资讯的底部齐平,使界面更美观,将StrenchListView添加到PiScrollView中并在PiScrollView的父类XScrollView中做一些相关上拉刷新的操作。
【IPC分类】G06F17-25
【公开号】CN104598438
【申请号】CN201410845972
【发明人】不公告发明人
【申请人】深圳市英威诺科技有限公司
【公开日】2015年5月6日
【申请日】2014年12月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1