旋转播放器视图层的方法和设备与流程

文档序号:16528415发布日期:2019-01-05 10:32阅读:239来源:国知局
本发明涉及移动终端屏幕旋转过程,特殊视图层跟随旋转的特效的优化领域。
背景技术
::随着移动互联网领域的快速发展,视频播放器在应用层面广泛应用,其中视频播放器的用户体验在不断的被强化,一般的视频播放都有全屏播放和竖屏播放两种模式。在手机的屏幕旋转过程中,自动切换全屏播放和竖屏播放是目前的主流体验。目前的屏幕旋转带动播放器模式切换有几种不同的方案。一、在接收到系统的屏幕旋转后,直接切换播放器的模式,中间不存在位移过渡动画。缺陷:没有位移过渡,播放器的旋转与屏幕旋转视觉完成分离,比较生硬,不能连续响应。二、将播放器的视图放入屏幕旋转的窗口中跟随屏幕旋转。在计算机的世界里面,其实并不存在绝对连续的动画,用户所看到的屏幕上的动画本质上都是离散的,只是在一秒的时间里面离散的帧多到一定的数量人眼就觉得是连续的了,在ios中,最大的帧率是60帧每秒。ios提供了coreanimation框架,只需要开发者提供关键帧信息,比如提供某个animatable属性终点的关键帧信息,然后中间的值则通过一定的算法进行插值计算,从而实现补间动画。coreaniamtion中进行插值计算所依赖的时间曲线由camediatimingfunction提供。这里说的位移过渡动画就是通过coreaniamtion实现的。具体实现方法如图1所示。1.当移动终端的屏幕旋转状态发生变化时,移动终端向显示界面中显示的每个窗口发出一个询问消息,用于询问该窗口是否允许旋转。移动终端的显示界面由多个窗口组成。播放器视图层就是其中的一个窗口。旋转状态是指,移动终端处于横屏模式,还是竖屏模式。2.每个窗口接收到询问消息后,向系统发出反馈消息,用于反馈该窗口是否允许跟随屏幕方向变化。3.至少有一个窗口允许旋转,则移动终端的方向状态才会发生改变。4.允许旋转的窗口跟随移动终端的方向状态变化而改变。改变时,通过coreaniamtion实现动画效果。简单的来说,就是一个视图旋转的动画效果。播放器视图层和其他窗口一样,通过coreaniamtion实现动画效果。缺陷:1)操作系统自带的动画处理工具比起第三方软件提供商提供的专业动画工具在性能上差异很大。播放器视图层比其他窗口复杂很多,coreaniamtion无法给播放器视图层提供足够的支持,以实现良好的渲染效果。2)现有的方法中,将所有窗口都作为同一类型的窗口,采用相同的手段来处理,无法实现差异化处理。3)低估了屏幕旋转应用场景的复杂度(例如连续快速旋转的情况),采取的手段过于简单。正是由于现有技术中存在的大量问题,旋转过程中视频会出现黑色边框,在切回到竖屏时由于播放器视图父层窗口切换会导致概率性的黑屏闪烁等大量问题。其中,在旋转屏中,大部分的应用(除以上方案二以外)都会存在播放器视图层和屏幕窗口的分离,导致播放器视图层不能及时的跟随屏幕旋转。显得响应非常迟钝,不能连续,大大降低了用户体验。技术实现要素:本发明提出一种全新的实现方法,首先在架构层面还是延用现有技术中的窗口划分技术,从而使得本发明能够应用到现有的智能终端中。其次,将视频播放器视图层和系统旋转窗口剥离,从而能够对视频播放器视图实施特殊化的视觉处理。然后,对视频播放器视图使用pop动画过渡,优化了以上的旋转使用缺陷,可在旋转中使播放器视图层拥有单独跟随屏幕旋转,无窗口黑边,可连续响应等功能。本发明提供了一种旋转播放器视图层的方法,包括:移动终端的显示界面包括一个或多个窗口,其中一个窗口是播放器视图层,该窗口被预先设置,需要设置的内容至少包括两个参数:设置窗口类型为空窗口(emptywindow)类型,以及,设置反馈类型为允许旋转;当移动终端发生屏幕旋转时,向显示界面中的每一个窗口发送查询消息,询问各个窗口是否允许旋转;播放器视图层所在的窗口,反馈窗口类型是空窗口,以及反馈类型是允许旋转;移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成第一动画效果,使播放器跟随移动终端的屏幕旋转。优选的,其中所述的生成第一动画效果,使播放器跟随移动终端的屏幕旋转,具体是:生成pop动画效果,使播放器跟随移动终端的屏幕旋转。优选的,其中所述的生成pop动画效果,使播放器跟随移动终端的屏幕旋转,具体是:查询pop状态,如果pop状态是正在执行状态,则将本次旋转动作的屏幕状态加入到旋转堆栈中,并结束流程;如果pop状态是空闲状态,则将pop状态设置为正在执行状态;播放器视图的加载和pop动画实现,具体为:将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转,并将pop状态修改为空闲状态;查询旋转堆栈中是否有数据,如果没有则结束,否则继续执行后续步骤;从堆栈中取出最后的屏幕状态,清空所述堆栈,并将流程循环到如上所述的播放器视图的加载和pop动画实现步骤。优选的,其中的所述对播放器视图执行pop动画制作的操作,包括设置了屏幕旋转和播放器窗口旋转的最大时间,设定屏幕旋转最大时间为0.3秒,把每次播放器旋转pop动画时间设置为屏幕旋转最大时间的一半,设定为0.15秒。优选的,还包括对允许旋转且窗口状态不是空窗口的窗口生成第二动画效果。优选的,第二动画效果的视觉效果低于第一动画效果。本发明还提供一种旋转播放器视图层的设备,应用于移动终端,移动终端的显示界面包括一个或多个窗口,其中一个窗口是播放器视图层,包括:设置部件,用于预先设置该播放器视图层所在的窗口,需要设置的内容至少包括两个参数:设置窗口类型为空窗口(emptywindow)类型,以及,设置反馈类型为允许旋转;查询部件,用于当移动终端发生屏幕旋转时,向显示界面中的每一个窗口发送查询消息,询问各个窗口是否允许旋转;反馈部件,用于播放器视图层所在的窗口,反馈窗口类型是空窗口,以及反馈类型是允许旋转;第一动画部件,用于移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成第一动画效果,使播放器跟随移动终端的屏幕旋转。优选的,其中所述的生成第一动画效果,使播放器跟随移动终端的屏幕旋转,具体是:生成pop动画效果,使播放器跟随移动终端的屏幕旋转优选的,其中所述的pop动画部件,用于移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成pop动画效果,使播放器跟随移动终端的屏幕旋转,具体是:pop状态部件,用于查询pop状态,如果pop状态是正在执行状态,则将本次旋转动作的屏幕状态加入到旋转堆栈中,并结束;如果pop状态是空闲状态,则将pop状态设置为正在执行状态;动画制作部件,用于将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转,并将pop状态修改为空闲状态;堆栈处理部件,用于查询旋转堆栈中是否有数据,如果没有则结束,否则从堆栈中取出最后的屏幕状态,清空所述堆栈,并运行所述的动画制作部件。优选的,其中的所述对播放器视图执行pop动画制作的操作,包括设置了屏幕旋转和播放器窗口旋转的最大时间,设定屏幕旋转最大时间为0.3秒,把每次播放器旋转pop动画时间设置为屏幕旋转最大时间的一半,设定为0.15秒。优选的,还包括第二动画部件,用于对允许旋转且窗口状态不是空窗口的窗口生成第二动画效果。优选的,第二动画效果的视觉效果低于第一动画效果。本发明还提供了一种移动终端,包括处理器和储存设备,所述储存设备存储有处理器可执行指令,通过执行所述指令,实现如权利要求1-6所述的任何一个方法。本发明还提供了一种计算机可读介质,存储有计算机程序,所述计算机程序用于执行如权利要求1-6所述的任一方法。本专利申请的优点:1.播放器跟随屏幕旋转单独剥离,应用的其他图层不受屏幕旋转影响。2.播放器旋转动画接近于系统旋转动画,有非常好的过渡体验。3.播放器旋转能支持连续响应,最大的响应延时为0.15秒,肉眼难以区分。4.播放器旋转的独立动画旋转可优化旋转过程中存在黑边,旋转不同步等问题。5.旋转屏的控制更加灵活,可用emty响应窗口动态控制,支持feed流,卡片等比较新颖的播放展示方式。附图说明图1为现有技术中将播放器的视图放入屏幕旋转的窗口中跟随屏幕旋转的方法流程图;图2为系统屏旋转的基本原理图;图3为根据本发明实施例提供的一种旋转播放器视图层的方法的流程图;图4为图3中生成第一动画效果的详细实现流程图;图5为根据本发明实施例提供的一种旋转播放器视图层的方法的实际应用图;图6为本发明又一实施例提供的装置的结构示意图;图7为图6所示的结构示意图中第一动画部件的结构示意图;图8为本发明又一实施例提供的装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面结合附图对本发明实施例提供的方法及装置进行详细描述。图2为系统屏旋转的基本原理图。每当一个新的窗口加入到系统屏幕中,会触发一次是否允许旋转屏幕的反馈。例如,当窗口a(windowa),窗口b(windowb),…窗口z(windowz)加入到系统屏幕中时,分别触发是否允许旋转屏幕的反馈。当屏幕旋转状态发生变化时,所有在屏幕中显示的窗口都会触发系统的是否允许旋转屏幕的反馈。在反馈中,决定该窗口是否允许跟随屏幕方向变化。在旋转屏过程中,系统会发出通知,在应用层可以处理对应的处理事件。至少有一个窗口允许旋转,系统的方向状态才会发生改变。一旦系统的方向状态发生变化,相应窗口则跟随旋转。图3为根据本发明实施例提供的一种旋转播放器视图层的方法的流程图,描述了一种旋转播放器视图层的方法,包括:移动终端的显示界面包括一个或多个窗口,其中一个窗口是播放器视图层,该窗口被预先设置,需要设置的内容至少包括两个参数:设置窗口类型为空窗口(emptywindow)类型,以及,设置反馈类型为允许旋转。移动终端包括但不限于以下形式:智能手机,pad,智能可穿戴设备等。移动终端的显示界面中,不同的显示部分会采用各自独立的窗口的形式实现,一般情况,都包括多个窗口,至少包括用于显示app内容的窗口,用于显示系统信息的窗口。当移动终端发生屏幕旋转时,向显示界面中的每一个窗口发送查询消息,询问各个窗口是否允许旋转。移动终端的屏幕旋转是指用户在横屏模式和竖屏模式之间的转换。包括从横屏模式转换到竖屏模式,也包括从竖屏模式转换到横屏模式。所述的屏幕旋转是由移动终端内的重力传感器检测到,然后通过通知移动终端的软件系统的。播放器视图层所在的窗口,反馈窗口类型是空窗口,以及反馈类型是允许旋转。移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成第一动画效果,使播放器跟随移动终端的屏幕旋转。优选的,还可以包括对允许旋转且窗口状态不是空窗口的窗口生成第二动画效果。第一动画效果与第二动画效果不同,第二动画效果是由移动终端自身提供的基础级别的动画效果,第二动画效果是渲染效果更好的增强动画效果。目前,比较流行的第一动画效果是pop动画效果。在ios系统中,第二动画效果是由coreanimation实现的动画效果。这两种动画效果在视觉上存在差异,譬如当viewcontroller侧滑返回的时候,系统会将coreanimation的动画会停止,而基于cadisplaylink实现的动画则不会停止,因而可以实现类似网易云音乐从播放页侧滑时hold住专辑封面图旋转的效果。图4为图3中生成第一动画效果的详细实现流程图,描述了其中所述的生成pop动画效果,使播放器跟随移动终端的屏幕旋转,具体是:用户在使用移动终端的过程中,对移动终端的屏幕状态的改变方式是多种多样的。例如有一次性改变的,即屏幕状态改变一次后,较长时间维持不变;例如有持续的缓慢改变的,即不停的在改变屏幕状态,但是两次改变之间的时间间隔不会很短;例如快速连续改变的,即连续改变,且时间间隔很短,短到pop动画都来不及播放完成。我们先从最简单的情况展开描述,针对一次性改变的。只需要执行这样的操作:将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转。这样就能使得播放器视图与显示界面剥离开了。视觉效果更好的pop动画能够使得播放器视图的旋转过程具有更好的视觉效果。避免了现有技术中用coreanimation来处理播放器视图所带来的各种问题。但是,多于多次连续改变屏幕状态的情况就要复杂很多。主要的设计原则是:pop动画开始播放后,就需要播放完成,而不会被后续的屏幕旋转所影响;而在这次播放过程中,如果移动终端又发生了多次屏幕旋转,则直接针对最后的屏幕状态进行处理。查询pop状态,如果pop状态是正在执行状态,则将本次旋转动作的屏幕状态加入到旋转堆栈中,并结束流程;如果pop状态是空闲状态,则将pop状态设置为正在执行状态;播放器视图的加载和pop动画实现,具体为:将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转,并将pop状态修改为空闲状态;查询旋转堆栈中是否有数据,如果没有则结束,否则继续执行后续步骤;从堆栈中取出最后的屏幕状态,清空所述堆栈,并将流程循环到如上所述的播放器视图的加载和pop动画实现步骤。本发明中屏幕旋转和播放器窗口旋转中最大时间延时为:屏幕旋转时间为0~0.3秒之间的一个不确定值。最大旋转延时=(旋转屏最大时间–pop动画时间)>(pop动画时间-旋转屏最小时间)?(旋转屏最大时间–pop动画时间):(pop动画时间-旋转屏最小时间)。上述公式的含义是:如果(旋转屏最大时间–pop动画时间)大于(旋转屏最大时间–pop动画时间),在最大旋转延时为(旋转屏最大时间–pop动画时间),否则最大旋转延时为(pop动画时间-旋转屏最小时间)。把每次播放器旋转pop动画时间在系统旋转屏最大时间的一半,设定为0.15秒。在连续转动中最大延时时间为系统旋转最大时间的一半、0.15秒,并保证了旋转过程中播放器旋转动画接近于系统旋转效果。图5为根据本发明实施例提供的一种旋转播放器视图层的方法的实际应用图。通过预先将播放器视图层设置为空窗口并允许旋转,来接收系统的旋转屏消息,及时响应或存放在旋转纪录堆栈中,用于触发播放器的旋转屏模式切换。在系统是否实现屏幕旋转的反馈中,通过窗口类型,把是否触发屏幕旋转事件反馈到系统中。在旋转过程中,通过pop动画状态,限制播放器的旋转频率,来触发pop动画使播放器跟随旋转。结束后在堆栈末端取出最后的屏幕状态进行旋转,同步系统旋转方向。图6为本发明又一实施例提供的装置的结构示意图,描述了一种旋转播放器视图层的设备,应用于移动终端,移动终端的显示界面包括一个或多个窗口,其中一个窗口是播放器视图层,包括:设置部件,用于预先设置该播放器视图层所在的窗口,需要设置的内容至少包括两个参数:设置窗口类型为空窗口(emptywindow)类型,以及,设置反馈类型为允许旋转。移动终端包括但不限于以下形式:智能手机,pad,智能可穿戴设备等。移动终端的显示界面中,不同的显示部分会采用各自独立的窗口的形式实现,一般情况,都包括多个窗口,至少包括用于显示app内容的窗口,用于显示系统信息的窗口。查询部件,用于当移动终端发生屏幕旋转时,向显示界面中的每一个窗口发送查询消息,询问各个窗口是否允许旋转。包括从横屏模式转换到竖屏模式,也包括从竖屏模式转换到横屏模式。所述的屏幕旋转是由移动终端内的重力传感器检测到,然后通过通知移动终端的软件系统的。反馈部件,用于播放器视图层所在的窗口,反馈窗口类型是空窗口,以及反馈类型是允许旋转;第一动画部件,用于移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成第一动画效果,使播放器跟随移动终端的屏幕旋转。优选的还包括了,第二动画部件,用于对允许旋转且窗口状态不是空窗口的窗口生成第二动画效果。第一动画效果与第二动画效果不同,第二动画效果是由移动终端自身提供的基础级别的动画效果,第二动画效果是渲染效果更好的增强动画效果。目前,比较流行的第一动画效果是pop动画效果。在ios系统中,第二动画效果是由coreanimation实现的动画效果。这两种动画效果在视觉上存在差异,譬如当viewcontroller侧滑返回的时候,系统会将coreanimation的动画会停止,而基于cadisplaylink实现的动画则不会停止,因而可以实现类似网易云音乐从播放页侧滑时hold住专辑封面图旋转的效果。图7为图6所示的结构示意图中第一动画部件的结构示意图。用户在使用移动终端的过程中,对移动终端的屏幕状态的改变方式是多种多样的。例如有一次性改变的,即屏幕状态改变一次后,较长时间维持不变;例如有持续的缓慢改变的,即不停的在改变屏幕状态,但是两次改变之间的时间间隔不会很短;例如快速连续改变的,即连续改变,且时间间隔很短,短到pop动画都来不及播放完成。我们先从最简单的情况展开描述,针对一次性改变的。只需要执行这样的操作:将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转。这样就能使得播放器视图与显示界面剥离开了。视觉效果更好的pop动画能够使得播放器视图的旋转过程具有更好的视觉效果。避免了现有技术中用coreanimation来处理播放器视图所带来的各种问题。但是,多于多次连续改变屏幕状态的情况就要复杂很多。主要的设计原则是:pop动画开始播放后,就需要播放完成,而不会被后续的屏幕旋转所影响;而在这次播放过程中,如果移动终端又发生了多次屏幕旋转,则直接针对最后的屏幕状态进行处理。其中所述的pop动画部件,用于移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成pop动画效果,使播放器跟随移动终端的屏幕旋转,具体是:pop状态部件,用于查询pop状态,如果pop状态是正在执行状态,则将本次旋转动作的屏幕状态加入到旋转堆栈中,并结束;如果pop状态是空闲状态,则将pop状态设置为正在执行状态;动画制作部件,用于将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转,并将pop状态修改为空闲状态;堆栈处理部件,用于查询旋转堆栈中是否有数据,如果没有则结束,否则从堆栈中取出最后的屏幕状态,清空所述堆栈,并运行所述的动画制作部件。本发明中屏幕旋转和播放器窗口旋转中最大时间延时为:屏幕旋转时间为0~0.3秒之间的一个不确定值。最大旋转延时=(旋转屏最大时间–pop动画时间)>(pop动画时间-旋转屏最小时间)?(旋转屏最大时间–pop动画时间):(pop动画时间-旋转屏最小时间)。上述公式的含义是:如果(旋转屏最大时间–pop动画时间)大于(旋转屏最大时间–pop动画时间),在最大旋转延时为(旋转屏最大时间–pop动画时间),否则最大旋转延时为(pop动画时间-旋转屏最小时间)。把每次播放器旋转pop动画时间在系统旋转屏最大时间的一半,设定为0.15秒。在连续转动中最大延时时间为系统旋转最大时间的一半、0.15秒,并保证了旋转过程中播放器旋转动画接近于系统旋转效果。图8为本发明又一实施例提供的装置的结构示意图。描述了一种移动终端,包括处理器和储存设备,所述储存设备存储有处理器可执行指令,通过执行所述指令,实现一种旋转播放器视图层的方法,包括:移动终端的显示界面包括一个或多个窗口,其中一个窗口是播放器视图层,该窗口被预先设置,需要设置的内容至少包括两个参数:设置窗口类型为空窗口(emptywindow)类型,以及,设置反馈类型为允许旋转;当移动终端发生屏幕旋转时,向显示界面中的每一个窗口发送查询消息,询问各个窗口是否允许旋转;播放器视图层所在的窗口,反馈窗口类型是空窗口,以及反馈类型是允许旋转;移动终端接收到反馈消息后,作出旋转决定,对允许旋转且窗口类型是空窗口的窗口生成第一动画效果,使播放器跟随移动终端的屏幕旋转。优选的,其中所述的生成第一动画效果,使播放器跟随移动终端的屏幕旋转,具体是:生成pop动画效果,使播放器跟随移动终端的屏幕旋转。优选的,其中所述的生成pop动画效果,使播放器跟随移动终端的屏幕旋转,具体是:查询pop状态,如果pop状态是正在执行状态,则将本次旋转动作的屏幕状态加入到旋转堆栈中,并结束流程;如果pop状态是空闲状态,则将pop状态设置为正在执行状态;播放器视图的加载和pop动画实现,具体为:将播放器视图加载到当前窗口,对播放器视图执行pop动画制作的操作,然后播放pop动画,使得播放器视图跟随屏幕的旋转,并将pop状态修改为空闲状态;查询旋转堆栈中是否有数据,如果没有则结束,否则继续执行后续步骤;从堆栈中取出最后的屏幕状态,清空所述堆栈,并将流程循环到如上所述的播放器视图的加载和pop动画实现步骤。优选的,其中的所述对播放器视图执行pop动画制作的操作,包括设置了屏幕旋转和播放器窗口旋转的最大时间,设定屏幕旋转最大时间为0.3秒,把每次播放器旋转pop动画时间设置为屏幕旋转最大时间的一半,设定为0.15秒。优选的,还包括对允许旋转且窗口状态不是空窗口的窗口生成第二动画效果。优选的,第二动画效果的视觉效果低于第一动画效果。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(dsl)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、dsl或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(disk)和碟(disc)包括压缩光碟(cd)、激光碟、光碟、数字通用光碟(dvd)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1