视图缩放处理方法和视图缩放处理装置的制造方法_2

文档序号:9375057阅读:来源:国知局
遍历所有的子View,计算它们的新大小和新的位置,按照计算其本身的方法相同。
[0044]然后判断子View是否是一个ViewGroup,是则调用递归的调用其相应缩放的函数,否则直接measure子View,其中MeasureSpec的类型必须使用EXACTLY。
[0045]完成了以上的步骤,基本上就可以实现简单的页面缩放了。但还是会有很多细节问题,在实际的应用中。比如Textview(文本视图)的字体大小,子View是VIewgroup嵌套的问题,子Viewgroup不是Framelayout的情况等等。下面介绍实际应用中的解决方案。
[0046]Textview直接继承自View,在父View应用缩放时,会直接改变Textview本身的视图大小,而里面的文字不会发生改变,甚至文字的margin(边页空白)都不会发生变化。而button是继承自Textview,里面的文字也不会改变,必须要单独设置。优选使用px为单位,设置字体大小。因为SP应用在系统改变大小的情况下,会对应用产生不必要的适配问题,而dp应用仅在xml布局中比较好,而在代码中需要转换,而且不合适在字体中使用。所以直接使用字体的像素值是最好的选择。具体的,可以在设置原始大小时,调整一个比较合适的字体像素大小,和一个随着Textview本身视图缩放,字体像素值变化的一个增量(减量)。这样在每次父View应用缩放时,如果发现子View是继承自Textview,则使用之前设置好的增量(减量)来直接改变字体大小,需要注意的还应传递一个单位值,这里传递像素即可。
[0047]解决子View也是ViewGroup的问题。当子View也是一个布局时,其本身也会包含布局视图(继承自ViewGroup的)或者直接视图(直接继承自View的)。这样在传递缩放参数时就会产生问题,因为实际的应用中我们并不能总是保证所有的布局视图都是Framelayouto因此在实现缩放时使用一个通用的Viewgroup类,让所有的布局视图都继承自这个布局。在这个ViewGroup中添加手势缩放,传递缩放参数的代码。我们保留常用布局的默认实现。只在缩放时调用相应的函,这样做易于维护。
[0048]还有一种解决方法就是把常用的三种布局视图都实现这样的缩放控制,这样会有一些冗余的代码,但是实现简单,技术难度较小。也可以根据不同的布局视图做一些微调。在ViewGroup嵌套ViewGroup的问题上,以上两种方案各有利弊,针对实际的电子杂志页面缩放,可使用后者方法,因为我们的布局基本都是在Framelayout上实现的。
[0049]最后一个问题就是在实际应用中,子View可能比较复杂,可能是重写过的基础控件。里面的逻辑不能简单的使用以上的规则来定义。这时一个比较直观的方法就是针对有问题且不能使用通用方法来解决的问题,需要单独处理。根据实际情况来微调,且不能破坏其他的规则,需要保证以下几点:
[0050]a.单独微调的规则之间不能互相影响;b.缩放的流程不能破坏;c.如果调整后的View还有其他的子View,则对其子View的调整需要放在单独的实现的View中,不能再放在基础的布局视图中。
[0051]作为扩展的实现,还可以使用View的layout方法来完成位置和大小的变化,这样比较直观,就是在子View和自身缩放时,传递缩放后位置和大小。这样做直接跳过了measure的步骤,因为这样不会保存measure之后的大小,所以在其他有重绘的时机时,会采用未经修改过的裁剪大小,而不是我们主动缩放后的大小,所以会导致一些不可预制的问题,因为Android的View重绘机制有三种,一是主动请求,二是View的状态改变,三是View的大小位置改变。layout的方法是I和3的条件,而我们不能控制2的条件发生的重绘。但如果不必保存View的裁剪大小,我们也可以使用这种方式。例如在控制Imageview的变化大小时,不必考虑其状态的改变。
[0052]图2示出了根据本发明的实施例的视图缩放处理装置的示意框图。
[0053]如图2所示,根据本发明的实施例的视图缩放处理装置200可以包括:缩放单元202,用于响应缩放操作,改变根视图的视图大小,以及根据所述缩放信息对所述根视图的子视图进行缩放处理;数据传递单元204,用于将缩放信息传递给所述子视图。
[0054]在对根视图进行缩放时,同时向子视图下发缩放参数,实现了子视图跟随跟视图进行缩放的效果。
[0055]在上述技术方案中,优选的,所述缩放单元202包括:调用单元2022,在所述子视图的类型为布局视图时,所述缩放信息为缩放参数,调用相应的缩放函数并基于所述缩放参数对所述子视图进行缩放处理,以及在所述子视图的类型为直接视图时,所述缩放信息为所述子视图缩放后的大小信息,调用测量方法对所述子视图进行缩放处理。
[0056]在根视图使用一个Viewgroup (布局视图),然后实现一个手势缩放的行为,控制缩放的参数,使用这个参数来对当前页面的大小做重置,然后在onMeasure方法中将这个参数传递下去,如果子view是单独的view则直接传递计算之后的值,如果子view是ViewGroup,则传递这个参数的具体值,这样递归的对各个子view做大小和位置的重置,来实现缩放的效果。
[0057]在上述技术方案中,优选的,还包括:设置单元206,用于为子视图中的字体设置预定像素大小,以及随根视图缩放的变化量;所述缩放单元202还用于在所述根视图缩放时,若子视图为继承自文本视图,则使用所述变化量改变所述子视图中的字体大小。
[0058]在子视图随根视图进行缩放时,其中的字体也能随之改变,并且通过预先设置变化量的方式提高了缩放效率。
[0059]在上述技术方案中,优选的,还可以包括:存储单元208,记录所述根视图和所述子视图的原位置和大小以及原比例;所述缩放单元202还用于在所述根视图接收到缩放操作和缩放参数后,根据原比例确定长和宽的新值。缩放后的比例与缩放前的比例相同。
[0060]在上述技术方案中,优选的,所述数据传递单元204还用于在对所述子视图进行缩放处理的同时,将所述缩放信息下发至下一级子视图。
[0061]以上结合附图详细说明了根据本发明的技术方案,本发明公开了一种在Android应用程序中实现应用程序内的页面级缩放的解决方案。在现有的Android应用程序中,这种需求很不常见,但对于在手机上的杂志阅读很有实际意义。首先在根布局使用一个Viewgroup,然后实现一个手势缩放的行为,控制缩放的参数,使用这个参数对当前页面的大小做重置,然后在onMeasure方法中将这个参数传递下去。如果子view是单独的view,则直接传递计算之后的值,如果子view是ViewGroup,则传递这个参数的具体值,这样递归的对各个子view做大小和位置的重置,来实现缩放的效果。
[0062]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种视图缩放处理方法,其特征在于,包括: 响应缩放操作,改变根视图的视图大小; 将缩放信息传递给所述根视图的子视图; 根据所述缩放信息对所述子视图进行缩放处理。2.根据权利要求1所述的视图缩放处理方法,其特征在于,在所述子视图的类型为布局视图时,所述缩放信息为缩放参数,调用相应的缩放函数并基于所述缩放参数对所述子视图进行缩放处理; 在所述子视图的类型为直接视图时,所述缩放信息为所述子视图缩放后的大小信息,调用测量方法对所述子视图进行缩放处理。3.根据权利要求2所述的视图缩放处理方法,其特征在于,还包括: 为子视图中的字体设置预定像素大小,以及随根视图缩放的变化量; 在所述根视图缩放时,若子视图为继承自文本视图,则使用所述变化量改变所述子视图中的字体大小。4.根据权利要求2所述的视图缩放处理方法,其特征在于,还包括:记录所述根视图和所述子视图的原位置和大小以及原比例; 在所述根视图接收到缩放操作和缩放参数后,根据原比例确定长和宽的新值。5.根据权利要求1至4中任一项所述的视图缩放处理方法,其特征在于,还包括:在对所述子视图进行缩放处理的同时,将所述缩放信息下发至下一级子视图。6.一种视图缩放处理装置,其特征在于,包括: 缩放单元,用于响应缩放操作,改变根视图的视图大小,以及根据所述缩放信息对所述根视图的子视图进行缩放处理; 数据传递单元,用于将缩放信息传递给所述子视图。7.根据权利要求6所述的视图缩放处理装置,其特征在于,所述缩放单元包括: 调用单元,在所述子视图的类型为布局视图时,所述缩放信息为缩放参数,调用相应的缩放函数并基于所述缩放参数对所述子视图进行缩放处理,以及在所述子视图的类型为直接视图时,所述缩放信息为所述子视图缩放后的大小信息,调用测量方法对所述子视图进行缩放处理。8.根据权利要求7所述的视图缩放处理装置,其特征在于,还包括: 设置单元,用于为子视图中的字体设置预定像素大小,以及随根视图缩放的变化量;所述缩放单元还用于在所述根视图缩放时,若子视图为继承自文本视图,则使用所述变化量改变所述子视图中的字体大小。9.根据权利要求6所述的视图缩放处理装置,其特征在于,还包括: 存储单元,记录所述根视图和所述子视图的原位置和大小以及原比例; 所述缩放单元还用于在所述根视图接收到缩放操作和缩放参数后,根据原比例确定长和宽的新值。10.根据权利要求6至9中任一项所述的视图缩放处理装置,其特征在于,所述数据传递单元还用于在对所述子视图进行缩放处理的同时,将所述缩放信息下发至下一级子视图。
【专利摘要】本发明提出了一种视图缩放处理方法和一种视图缩放处理装置,其中视图缩放处理方法包括:响应缩放操作,改变根视图的视图大小;将缩放信息传递给所述根视图的子视图;根据所述缩放信息对所述子视图进行缩放处理。通过本发明的技术方案能够实现基于安卓系统的应用程序内的页面级缩放,提高阅读操作体验。
【IPC分类】G06F3/0484, G06F9/44
【公开号】CN105094584
【申请号】CN201410206909
【发明人】林好, 高辰柱
【申请人】北大方正集团有限公司, 北京北大方正电子有限公司
【公开日】2015年11月25日
【申请日】2014年5月16日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1