CN107678565A - 一种对象切换的方法及装置 - Google Patents
一种对象切换的方法及装置 Download PDFInfo
- Publication number
- CN107678565A CN107678565A CN201711048070.4A CN201711048070A CN107678565A CN 107678565 A CN107678565 A CN 107678565A CN 201711048070 A CN201711048070 A CN 201711048070A CN 107678565 A CN107678565 A CN 107678565A
- Authority
- CN
- China
- Prior art keywords
- height value
- layout
- display interface
- soft keyboard
- display
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0233—Character input methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明提供一种对象切换的方法及装置,检测显示界面上是否发生触发显示第一对象的指令;当检测显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;通过在显示第一对象前将显示界面的根布局的高度值设置为计算得到的布局高度值,在通过显示第一对象,隐藏第二对象以实现第二对象切换到第一对象时,布局的高度值不会由于第一对象弹出而挤压布局或者第二对象隐藏而拉伸布局,导致布局的高度值发生变化,进而布局内的组件不会随着布局的高度值的变化而变化。解决了现有技术中在进行对象切换时,存在跳闪现象,导致视觉上的不流畅的问题。
Description
技术领域
本发明属于安卓系统技术领域,尤其涉及一种对象切换的方法及装置。
背景技术
现今移动互联网在社交场景的使用越来越广泛,也越来越多花样,有较早前的BBS这种通过发帖和回帖模式进行非即时性的文字交流,和QQ早期的只支持文字的即时通讯。后来有了各种各样的表情包。再到后来使用语音聊天,发送语音等。即当前即时通讯中不仅包括用于输入文字的软键盘,还包括用于输入表情以及语音的控制面板。
在即时通讯过程中,在利用软键盘输入文字后输入符合当前心情的表情时,需要通过显示的控制面板完成表情的输入,因此需要将显示的对象从软键盘切换到控制面板,反之亦然。即需要完成对象切换。
在即时通讯过程中,从控制面板对象切换到软键盘对象时,在弹出软键盘时,软键盘将挤压布局,造成布局高度发生变化。且由于布局高度的变化,导致布局内的组件的位置发生变化。例如用于输入内容的输入框,其位置将会随着布局高度的变化而变化。反之,从软键盘对象切换到控制面板对象时,在软键盘收起时,将拉伸布局,造成布局高度发生变化。且由于布局高度的变化,导致布局内的组件的位置发生变化。例如用于输入内容的输入框,其位置将会随着布局高度的变化而变化。
因此,现有技术中存在布局的高度发生变化,导致布局内组件位置发生上下移动而导致的跳闪现象,进而导致视觉上的不流畅。
发明内容
有鉴于此,本发明的目的在于提供一种对象切换的方法及装置,以解决现有技术中对象切换时存在跳闪现象,导致视觉上不流畅的问题。
技术方案如下:
本发明提供一种对象切换的方法,包括:
检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;
当检测显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;
设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
显示所述第一对象;
隐藏所述第二对象。
优选地,所述检测显示界面上是否发生触发显示第一对象的指令包括:
设置触控事件监听器;
利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令。
优选地,当所述第一对象为软键盘,所述第二对象为控制面板时,所述根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值包括:
获取所述显示界面的布局高度值;
获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
计算所述显示界面的布局高度值和所述软键盘的高度值的差值;其中,所述差值为在显示第一对象后所述显示界面的布局高度值;
或,当所述第一对象为控制面板,所述第二对象为软键盘时,所述根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值包括:
获取所述显示界面的布局高度值;
获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
计算所述显示界面的布局高度值和所述软键盘的高度值的和值;其中,所述和值为在显示第一对象后所述显示界面的布局高度值。
优选地,当所述第一对象为软键盘,所述第二对象为控制面板时,所述获取所述软键盘的高度值包括:
在显示所述软键盘前,获取所述显示界面的布局高度值;
在显示所述软键盘后,获取所述显示界面的布局高度值;
计算并存储所述软键盘显示前后的所述显示界面的布局高度值之差;
从存储有所述显示界面的布局高度值之差的位置,读取所述显示界面的布局高度值之差;
或,
当所述第一对象为控制面板,所述第二对象为软键盘时,所述获取所述软键盘的高度值包括:
从存储有所述显示界面的布局高度值之差的位置,读取上一次所述软键盘显示前后的所述显示界面的布局高度值之差。
优选地,所述显示所述第一对象后,还包括:
设置所述显示界面的根布局的高度值为自适应高度。
本发明还提供一种对象切换的装置,包括:
检测单元,用于检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;
计算单元,用于当所述检测单元检测到显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;
设置单元,用于设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
显示单元,用于显示所述第一对象;
所述显示单元,还用于隐藏所述第二对象。
优选地,所述检测单元包括:
设置子单元,用于设置触控事件监听器;
检测子单元,用于利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令。
优选地,所述计算单元包括:
第一获取子单元,用于获取所述显示界面的布局高度值;
第二获取子单元,用于获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
第一计算子单元,用于计算所述显示界面的布局高度值和所述软键盘的高度值的差值;其中,所述差值为在显示第一对象后所述显示界面的布局高度值;
第二计算子单元,用于计算所述显示界面的布局高度值和所述软键盘的高度值的和值;其中,所述和值为在显示第一对象后所述显示界面的布局高度值。
优选地,所述第二获取子单元包括:
布局高度获取单元,用于在显示所述软键盘前,获取所述显示界面的布局高度值;
所述布局高度获取单元,还用于在显示所述软键盘后,获取所述显示界面的布局高度值;
计算存储单元,用于计算并存储所述软键盘显示前后的所述显示界面的布局高度值之差;
读取单元,用于从存储有所述显示界面的布局高度值之差的位置,读取所述显示界面的布局高度值之差。
优选地,所述设置单元,还用于设置所述显示界面的根布局的高度值为自适应高度。
与现有技术相比,本发明提供的上述技术方案具有如下优点:
从上述技术方案可知,本申请中检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;当检测显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;通过在显示第一对象前就将显示界面的根布局的高度值设置为计算得到的布局高度值,在通过显示第一对象,隐藏第二对象以实现第二对象切换到第一对象的过程中,布局的高度值不会由于第一对象弹出而挤压布局或者第二对象隐藏而拉伸布局,导致布局的高度值发生变化,进而布局内的组件不会随着布局的高度值的变化而变化。解决了现有技术中在进行对象切换时,存在显示跳闪现象,带来视觉上的不流畅性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种对象切换的方法的流程图;
图2是本发明实施例提供的另一种对象切换的方法的流程图;
图3是本发明实施例提供的另一种对象切换的方法的流程图;
图4是本发明实施例提供的一种对象切换的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例公开了一种对象切换的方法,应用于安卓系统中,具体可以应用在安装有安卓系统的手机、平板电脑等电子设备中。参见图1,该实施例包括以下步骤:
S101、检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;
当检测显示界面上发生触发显示第一对象的指令时,执行步骤S102;
当检测显示界面上未发生触发显示第一对象的指令时,结束流程;
本实施例中,显示界面上可以显示第一对象也可以显示第二对象,其中,第一对象和第二对象不同,且第一对象和第二对象不同时显示。例如,显示界面上显示有第二对象时,显示界面上没有显示第一对象,此时用户需要操作第一对象以完成特定功能时,需要在显示界面上显示第一对象。根据接收到的显示第一对象的指令完成显示第一对象的操作后,由于显示界面上显示了第一对象,因此需要将第二对象隐藏,进而完成由第二对象切换到第一对象的操作。
本实例中以具有安卓系统的手机为例进行说明。手机具有触摸屏,在显示有第二对象的显示界面上,需要显示第一对象时,通过在触摸屏的特定区域进行触摸操作,可以触发显示第一对象的指令,进而在完成后续处理后可以显示第一对象并隐藏第二对象,实现了第二对象切换到第一对象的操作。
S102、根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;
在安卓系统中具有特定的用于负责与用户交互的组件,称之为activity,其为安卓系统提供可视化的用户界面。安卓系统中应用程序一般是由多个activity组成,而多个activity以视图的形式展现给用户。其中,视图是由一个个的组件构成的,例如输入框组件,由于包括多个组件,因此需要将多个组件按照布局的要求依次排列,以形成显示界面。即一个布局内包括有多个组件。
本实施例中,显示界面的布局高度值即为包括有多个组件的布局的高度值。
当在显示界面上显示此布局之外的对象时,为了使得显示出的对象不覆盖在布局之上导致布局内的某些组件被覆盖而看不到,需要将显示界面上显示的布局高度值进行挤压以预留出显示此布局之外的对象的空间。
正是由于显示界面的布局被挤压的高度值是用于显示对象的,因此,所述显示界面的布局被挤压的高度值等于第一对象的高度值或等于第二对象的高度值。
在获得显示界面的布局高度值和所述显示界面的布局被挤压的高度值后,计算得到在显示第一对象后所述显示界面的布局高度值。通常情况下,在显示界面的布局没被挤压时,显示界面的布局高度值为布满整个显示屏的高度值,例如为1080像素。显示界面的布局被第一对象或第二对象挤压的高度值为300像素,那么显示界面的布局被挤压后的布局高度值为1080像素与300像素的差值,即780像素。780像素即为计算得到的在显示第一对象后所述显示界面的布局高度值。
当然,如果显示界面的布局高度值已经为被挤压后的布局高度值了,即780像素,显示界面的布局被挤压的高度值为300像素,那么显示第一对象后所述显示界面的布局高度值将为恢复没被挤压的布局高度值,为780像素和300像素的和值,即1080像素。
S103、设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
根布局即为多个组件所在的布局,将计算得到的在显示第一对象后显示界面的高度值设置为根布局的高度值。
S104、显示所述第一对象;
S105、隐藏所述第二对象。
在未显示第一对象前,所述显示界面显示有第二对象,在接收到触发显示第一对象的指令,且设置好根布局的高度值后,按照设置好的根布局的高度值显示根布局界面,以及第一对象。其中,根布局界面内包括多个组件。在本实施例中,并不限定显示第一对象和隐藏第二对象之间的先后顺序。可以先显示第一对象,再隐藏第二对象,也可以先隐藏第二对象,再显示第一对象。只要能够实现由显示第二对象切换到显示第一对象即可。
从上述技术方案可知,本申请中检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;当检测显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;通过在显示第一对象前就将显示界面的根布局的高度值设置为计算得到的布局高度值,在通过显示第一对象,隐藏第二对象以实现第二对象切换到第一对象的过程中,布局的高度值不会由于第一对象弹出而挤压布局或者第二对象隐藏而拉伸布局,导致布局的高度值发生变化,进而布局内的组件不会随着布局的高度值的变化而变化。解决了现有技术中在进行对象切换时,存在显示跳闪现象,带来视觉上的不流畅性。
为了便于理解本申请的技术方案,以利用安卓系统的手机、平板电脑等电子设备中的即时通信应用为例进行说明。
在即时通信中,用户利用软键盘输入文字后,想要向对方发送符合当前心情的表情,需要在显示界面上显示用于输入表情的控制面板,使得用户通过操作控制面板完成表情的输入,并发送给对方。反之,用户利用控制面板完成表情的输入后,需要向对方发送文字内容时,需要在显示界面上显示软键盘。因此,在即时通信中需要完成软键盘与控制面板之间的切换。
在本实施例中,第一对象为软键盘,第二对象为控制面板,即由控制面板切换为软键盘的过程。为了保证显示软键盘后,软键盘不会覆盖布局内的某些组件,需要保证显示软键盘时布局的高度值随之改变。因此,将软键盘输入模式(windowSoftInputMode)设置为适应模式(adjustResize模式)。本实施例公开了一种对象切换的方法,参见图2,该实施例包括以下步骤:
S201、设置触控事件监听器;
设置触控事件(onTouch事件)监听器。
由于现有安卓系统中为onTouch事件提供出开发接口,因此可以直接利用onTouch事件监听器实时检测是否发生触发显示第一对象的指令,而且不用重写整个布局。当然,在其他实施例中可以设置测量事件(onMesure事件),测量得到布局的宽度值和高度值,通过和上一次测量的布局的宽度值和高度值进行比较,来确定是否发生触发显示第一对象的指令。但是,这种方式需要重写整个布局。
S202、利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令;
当检测显示界面上发生触发显示第一对象的指令时,执行步骤S203;
当检测显示界面上未发生触发显示第一对象的指令时,结束流程;
本实施例中第一对象为软键盘,通常情况下在需要利用软键盘完成文字内容的输入时,都需要点击输入框(EditText),基于此可以通过onTouch事件监听器实时监听EditText的onTouch事件。
当监听到发生EditText的onTouch事件时,则确定所述显示界面上发生了触发显示第一对象的指令;
当未监听到发生EditText的onTouch事件时,则确定所述显示界面上未发生触发显示第一对象的指令。
S203、获取所述显示界面的布局高度值;
由于在显示第一对象即软键盘之前,显示界面上显示的是第二对象即控制面板,同时显示界面上还显示有输入框,其中,输入框位于控制面板顶部,且输入框与控制面板都是布局内的组件。此时,显示界面的布局高度值为布满全局的高度值,例如1080像素。
S204、获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
设置监听器(OnGlobalLayoutListener)监听软键盘挤压布局的高度值。具体为:在软键盘显示前后,分别获取所述显示界面的布局高度值,计算软键盘显示前后的布局高度值之差,得到软键盘的高度值。将软键盘的高度值存储在预设位置。每次弹出显示软键盘的过程中,都通过OnGlobalLayoutListener监听软键盘挤压布局的高度值,即监听软键盘的高度值。并每次得到软键盘的高度值后,都更新存储在预设位置处的软键盘的高度值。
由于本实施例中,显示界面上显示有控制面板,而还未弹出显示软键盘,因此,获取软键盘的高度值的实现方式为从存储有软键盘的高度值的预定位置处读取上一次弹出显示的软键盘的高度值,按照上一次显示的软键盘的高度值弹出显示此次的软键盘。
S205、计算所述显示界面的布局高度值和所述软键盘的高度值的差值;其中,所述差值为在显示第一对象后所述显示界面的布局高度值;
由于软键盘在弹出显示后,将挤压布局,使得利用挤压出的空间显示软键盘,而在软键盘弹出显示之前显示界面的布局高度值为1080,软键盘的高度值为300,因此布局被挤压后的高度值将是1080像素与300像素的差值,即780像素。
S206、设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
将布局高度值设置为780像素。
S207、显示所述第一对象;
由于在显示第一对象之前,将布局高度值设置为780像素,相较于布满全局的高度值,预留了300像素的空间。因此在显示第一对象时,直接在预留的300像素的空间内显示第一对象,即显示软键盘,而不会挤压布局。因此,布局的高度值并不存在由原本的布满全局的高度值(1080像素)变化为被挤压后的高度值(780像素)的这一过程。且布局的高度值固定后,布局内的组件的位置是相对固定的,因此,在布局的高度值不变的情况下,布局内的组件的位置也不会发生变化。
S208、隐藏所述第二对象;
本实施例中先显示软键盘,然后再隐藏控制面板。显示界面的初始状态为显示控制面板及位于控制面板顶部的输入框。在显示软键盘之前,将布局的高度值设置为780像素,在接收到显示软键盘的指令后,按照布局的高度值780像素显示布局,并在预留的300像素的空间显示软键盘。显示出的软键盘并不会挤压控制面板以及位于控制面板顶部的输入框,导致控制面板和位于控制面板顶部的输入框的位置发生移动。再将控制面板隐藏后,输入框的位置将由控制面板顶部下降一个控制面板高度,位于布局的底部,而由于布局已经在显示界面上为软键盘预留了高度等于软键盘高度的显示空间,因此,布局的顶部与软键盘的顶部相邻,输入框的位置将位于软键盘的顶部。即本实施例中,在由控制面板切换软键盘的过程中,由于在显示软键盘之前已经为软键盘预留了显示空间,因此在软键盘弹出时并不会挤压布局,输入框将由位于控制面板顶部变化到位于软键盘顶部。
而现有技术中,初始状态为以布满全局的方式显示布局,当检测到软键盘弹出后,在弹出软键盘的过程中,会挤压布局,将原本高度值为1080像素的布局挤压为高度值为780像素。由于布局的高度值发生了变化,因此位于布局内的组件的位置将发生变化,很容易理解的是,原本位于1080像素位置的组件将位于780像素处。即控制面板以及输入框的位置发生变化。在显示软键盘后,隐藏控制面板,此时位于控制面板顶部的输入框将由于控制面板的隐藏而仅仅位于软键盘的顶部。
即现有技术中,在由控制面板切换软键盘的过程中,由于在弹出软键盘的过程中,软键盘会挤压布局,造成布局内组件例如输入框的位置跟随布局高度的变化而变化,进而存在跳闪现象。
明显地,采用本实施例中公开的控制面板切换软键盘方法,可以避免在弹出软键盘的过程中,软键盘挤压布局的问题产生,进而避免了布局内组件位置发生变化的问题,解决了现有技术中存在跳闪现象导致视觉上不流畅的问题。
可以理解的是,还可以先隐藏控制面板,再显示软键盘。
显示界面的初始状态为显示控制面板及位于控制面板顶部的输入框。在显示软键盘之前,将布局的高度值设置为780像素,在接收到显示软键盘的指令后,按照布局的高度值780像素显示布局,此时由于需要隐藏控制面板,因此,输入框将位于780像素处。在预留的300像素的空间显示软键盘。
即本实施例中,在由控制面板切换软键盘的过程中,由于在显示软键盘之前已经为软键盘预留了显示空间,因此在软键盘弹出时并不会挤压布局,造成输入框的位置跟随布局高度的变化而发生变化的问题。
而现有技术中,初始状态为以布满全局的方式显示布局,当检测到软键盘弹出后,先隐藏控制面板,输入框的位置由控制面板的顶部下降与控制面板的高度值相等的高度。然后弹出并显示软键盘,
在弹出软键盘的过程中,会挤压布局,将原本高度值为1080像素的布局挤压为高度值为780像素。由于布局的高度值发生了变化,因此位于布局内的组件的位置将发生变化,很容易理解的是,原本位于1080像素位置的组件将位于780像素处。即输入框被软键盘顶起,造成输入框位置的变化。此时输入框位于软键盘的顶部。
即现有技术中,在由控制面板切换软键盘的过程中,由于在弹出软键盘的过程中,软键盘会挤压布局,造成布局内组件例如输入框的位置跟随布局高度的变化而变化,进而存在跳闪现象。
明显地,采用本实施例中公开的控制面板切换软键盘的方法,无论先显示软键盘后隐藏控制面板,还是先隐藏控制面板再显示软键盘,都可以避免在弹出软键盘的过程中,软键盘挤压布局的问题产生,进而避免了布局内组件位置发生变化的问题,解决了现有技术中存在跳闪现象导致视觉上不流畅的问题。
S209、设置所述显示界面的根布局为自适应高度。
软键盘在弹出后,用户可以根据自身的需求更改软键盘的高度值,即软键盘的高度值是可以自定义修改的。由于在显示软键盘之前,将显示界面的根布局的高度值设置为计算得到的在显示第一对象后所述显示界面的布局高度值,因此布局的高度值为固定值,此时用户对显示的软键盘的高度值进行修改后,由于布局的高度值不能随之改变,将存在软键盘覆盖所述布局上显示的组件的问题。
本实施例中,在显示软键盘后,将显示界面的根布局的高度设置为自适应高度,以便适应软键盘高度值的变化。
从上述技术方案可知,本申请中通过设置触控事件监听器,检测显示界面上是否发生触发显示第一对象的指令;当检测显示界面上发生触发显示第一对象的指令时,获取所述显示界面的布局高度值,获取所述软键盘的高度值,计算所述显示界面的布局高度值和所述软键盘的高度值的差值;通过在显示第一对象前就将显示界面的根布局的高度值设置为计算得到的布局高度值,在通过显示第一对象,隐藏第二对象以实现第二对象切换到第一对象的过程中,布局的高度值不会被软键盘挤压,导致布局的高度值发生变化,进而布局内的组件不会随着布局的高度值的变化而变化。解决了现有技术中在进行对象切换时,存在跳闪现象导致视觉上的不流畅的问题。且通过在显示软键盘之后,将根布局的高度设置为自适应高度,使得可以满足用户对显示的软键盘的自定义修改的需求。
本实施例公开了另一种对象切换的方法,在本实施例中,第一对象为控制面板,第二对象为软键盘,即由软键盘切换为控制面板。
参见图3,该实施例包括以下步骤:
S301、设置触控事件监听器;
设置触控事件(onTouch事件)监听器。
由于现有安卓系统中为onTouch事件提供了开发接口,因此可以直接利用onTouch事件监听器实时检测是否发生触发显示第一对象的指令,而且不用重写整个布局。
S302、利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令;
当检测显示界面上发生触发显示第一对象的指令时,执行步骤S203;
当检测显示界面上未发生触发显示第一对象的指令时,结束流程;
本实施例中第一对象为控制面板,通常情况下在需要利用控制面板完成表情的输入时,都需要点击特定的控件,例如微信中提供的“+”符号的控件,基于此可以通过onTouch事件监听器实时监听“+”符号的控件的onTouch事件。
当监听到发生“+”符号的控件的onTouch事件时,则确定所述显示界面上发生了触发显示第一对象的指令;
当未监听到发生“+”符号的控件的onTouch事件时,则确定所述显示界面上未发生触发显示第一对象的指令。
S303、获取所述显示界面的布局高度值;
由于在显示第一对象即控制面板之前,显示界面上显示的是第二对象即软键盘,同时显示界面上还显示有输入框,其中,输入框位于软键盘顶部。由于显示软键盘时,需要为软键盘预留显示空间,因此布局高度值为布满全局的高度值与预留显示空间高度值之差。例如,780像素。
S304、获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
设置监听器(OnGlobalLayoutListener)监听软键盘挤压布局的高度值。具体为:在软键盘显示前后,分别获取所述显示界面的布局高度值,计算软键盘显示前后的布局高度值之差,得到软键盘的高度值。例如,300像素。
获取到软键盘的高度值后,还包括将软键盘的高度值存储在预设位置。每次弹出显示软键盘的过程中,都通过OnGlobalLayoutListener监听软键盘的高度值。并每次得到软键盘的高度值后,都更新存储在预设位置处的软键盘的高度值。
S305、计算所述显示界面的布局高度值和所述软键盘的高度值的和值;其中,所述和值为在显示第一对象后所述显示界面的布局高度值;
显示控制面板后,需要隐藏软键盘,因此显示控制面板后显示界面的布局将不在被软键盘挤压,因此显示第一对象后所述显示界面的布局高度值为显示软键盘时布局的高度值780像素与软键盘的高度值300像素的和值。即1080像素。
S306、设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
将布局高度值设置为1080像素。
S307、显示所述第一对象;
由于在显示第一对象之前,已经将布局高度值设置为1080像素,因此在显示第一对象时,直接在布局高度值为1080像素的布局上显示第一对象,而并不会存在先将第一对象显示在高度值为780像素的布局上,然后在被拉伸为高度值为1080像素的布局的过程。由于布局高度值固定后,布局内的组件位置是相对固定的,因此,在布局的高度值不变的情况下,布局内的组件的位置也不会发生变化。
S308、隐藏所述第二对象;
本实施例中先显示控制面板,然后再隐藏软键盘。
显示界面的初始状态为显示软键盘及位于软键盘顶部的输入框。在软键盘收起之前,将布局的高度值设置为1080像素,在显示控制面板时,按照布局的高度值为1080像素显示布局,在隐藏软键盘即收起软键盘的过程中,并不会拉伸布局,因此输入框的位置也不会随着布局高度的变化而变化。
可以理解的是,还可以先隐藏软键盘,再显示控制面板。
显示界面的初始状态为显示软键盘及位于软键盘顶部的输入框。在软键盘收起之前,将布局的高度值设置为1080像素,在隐藏软键盘时,由于按照布局的高度值为1080像素显示布局,因此并不会拉伸布局,进而输入框的位置也不会发生变化,此时显示控制面板,使得输入框位于控制面板的顶部。
S309、设置所述显示界面的根布局为自适应高度。
从上述技术方案可知,本申请中通过设置触控事件监听器,检测显示界面上是否发生触发显示第一对象的指令;当检测显示界面上发生触发显示第一对象的指令时,获取所述显示界面的布局高度值,获取所述软键盘的高度值,计算所述显示界面的布局高度值和所述软键盘的高度值的和值;通过在显示第一对象前就将显示界面的根布局的高度值设置为计算得到的布局高度值,在通过显示第一对象,隐藏第二对象以实现第二对象切换到第一对象的过程中,布局的高度值不会由于软键盘的隐藏而被拉伸,导致布局的高度值发生变化,进而布局内的组件不会随着布局的高度值的变化而变化。解决了现有技术中在进行对象切换时,存在跳闪现象导致视觉上的不流畅的问题。且通过在收起软键盘之后,将根布局的高度设置为自适应高度,使得可以满足用户对软键盘的自定义修改的需求。
对应上述对象切换的方法,本实施例还提供了一种对象切换的装置,所述装置的结构示意图请参阅图4所示,本实施例中生成系统包括:
检测单元401、计算单元402、设置单元403和显示单元404;
检测单元401,用于检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;
计算单元402,用于当所述检测单元检测到显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;
设置单元403,用于设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
设置单元403,还用于设置所述显示界面的根布局的高度值为自适应高度;
显示单元404,用于显示所述第一对象;
显示单元404,还用于隐藏所述第二对象。
可选地,检测单元401包括:
设置子单元和检测子单元;
设置子单元,用于设置触控事件监听器;
检测子单元,用于利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令。
可选地,计算单元402包括:
第一获取子单元、第二获取子单元、第一计算子单元和第二计算子单元;
第一获取子单元,用于获取所述显示界面的布局高度值;
第二获取子单元,用于获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
所述第二获取子单元进一步包括:
布局高度获取单元、计算存储单元和读取单元;
布局高度获取单元,用于在显示所述软键盘前,获取所述显示界面的布局高度值;
所述布局高度获取单元,还用于在显示所述软键盘后,获取所述显示界面的布局高度值;
计算存储单元,用于计算并存储所述软键盘显示前后的所述显示界面的布局高度值之差;
读取单元,用于从存储有所述显示界面的布局高度值之差的位置,读取所述显示界面的布局高度值之差。
第一计算子单元,用于计算所述显示界面的布局高度值和所述软键盘的高度值的差值;其中,所述差值为在显示第一对象后所述显示界面的布局高度值;
第二计算子单元,用于计算所述显示界面的布局高度值和所述软键盘的高度值的和值;其中,所述和值为在显示第一对象后所述显示界面的布局高度值。
从上述技术方案可知,本实施例中检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;当检测显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;通过在显示第一对象前就将显示界面的根布局的高度值设置为计算得到的布局高度值,在通过显示第一对象,隐藏第二对象以实现第二对象切换到第一对象的过程中,布局的高度值不会由于第一对象弹出而挤压布局或者第二对象隐藏而拉伸布局,导致布局的高度值发生变化,进而布局内的组件不会随着布局的高度值的变化而变化。解决了现有技术中在进行对象切换时,存在显示跳闪现象,带来视觉上的不流畅性。且通过在显示软键盘之后,将根布局的高度设置为自适应高度,使得可以满足用户对显示的软键盘的自定义修改的需求。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种对象切换的方法,其特征在于,包括:
检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;
当检测显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;
设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
显示所述第一对象;
隐藏所述第二对象。
2.根据权利要求1所述的方法,其特征在于,所述检测显示界面上是否发生触发显示第一对象的指令包括:
设置触控事件监听器;
利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令。
3.根据权利要求1所述的方法,其特征在于,当所述第一对象为软键盘,所述第二对象为控制面板时,所述根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值包括:
获取所述显示界面的布局高度值;
获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
计算所述显示界面的布局高度值和所述软键盘的高度值的差值;其中,所述差值为在显示第一对象后所述显示界面的布局高度值;
或,当所述第一对象为控制面板,所述第二对象为软键盘时,所述根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值包括:
获取所述显示界面的布局高度值;
获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
计算所述显示界面的布局高度值和所述软键盘的高度值的和值;其中,所述和值为在显示第一对象后所述显示界面的布局高度值。
4.根据权利要求3所述的方法,其特征在于,当所述第一对象为软键盘,所述第二对象为控制面板时,所述获取所述软键盘的高度值包括:
在显示所述软键盘前,获取所述显示界面的布局高度值;
在显示所述软键盘后,获取所述显示界面的布局高度值;
计算并存储所述软键盘显示前后的所述显示界面的布局高度值之差;
从存储有所述显示界面的布局高度值之差的位置,读取所述显示界面的布局高度值之差;
或,
当所述第一对象为控制面板,所述第二对象为软键盘时,所述获取所述软键盘的高度值包括:
从存储有所述显示界面的布局高度值之差的位置,读取上一次所述软键盘显示前后的所述显示界面的布局高度值之差。
5.根据权利要求1所述的方法,其特征在于,所述显示所述第一对象后,还包括:
设置所述显示界面的根布局的高度值为自适应高度。
6.一种对象切换的装置,其特征在于,包括:
检测单元,用于检测显示界面上是否发生触发显示第一对象的指令;其中,所述显示界面上显示有第二对象,所述第一对象与所述第二对象不同;
计算单元,用于当所述检测单元检测到显示界面上发生触发显示第一对象的指令时,根据所述显示界面的布局高度值和所述显示界面的布局被挤压的高度值,计算得到在显示第一对象后所述显示界面的布局高度值;其中,所述显示界面的布局被挤压的高度值等于所述第一对象的高度值或等于所述第二对象的高度值;
设置单元,用于设置所述显示界面的根布局的高度值为计算得到的在显示第一对象后所述显示界面的布局高度值;
显示单元,用于显示所述第一对象;
所述显示单元,还用于隐藏所述第二对象。
7.根据权利要求6所述的装置,其特征在于,所述检测单元包括:
设置子单元,用于设置触控事件监听器;
检测子单元,用于利用所述触控事件监听器检测所述显示界面上是否发生触发显示第一对象的指令。
8.根据权利要求6所述的装置,其特征在于,所述计算单元包括:
第一获取子单元,用于获取所述显示界面的布局高度值;
第二获取子单元,用于获取所述软键盘的高度值;其中,所述软键盘的高度值等于所述显示界面的布局被挤压的高度值;
第一计算子单元,用于计算所述显示界面的布局高度值和所述软键盘的高度值的差值;其中,所述差值为在显示第一对象后所述显示界面的布局高度值;
第二计算子单元,用于计算所述显示界面的布局高度值和所述软键盘的高度值的和值;其中,所述和值为在显示第一对象后所述显示界面的布局高度值。
9.根据权利要求8所述的装置,其特征在于,所述第二获取子单元包括:
布局高度获取单元,用于在显示所述软键盘前,获取所述显示界面的布局高度值;
所述布局高度获取单元,还用于在显示所述软键盘后,获取所述显示界面的布局高度值;
计算存储单元,用于计算并存储所述软键盘显示前后的所述显示界面的布局高度值之差;
读取单元,用于从存储有所述显示界面的布局高度值之差的位置,读取所述显示界面的布局高度值之差。
10.根据权利要求6所述的装置,其特征在于,所述设置单元,还用于设置所述显示界面的根布局的高度值为自适应高度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711048070.4A CN107678565A (zh) | 2017-10-31 | 2017-10-31 | 一种对象切换的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711048070.4A CN107678565A (zh) | 2017-10-31 | 2017-10-31 | 一种对象切换的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107678565A true CN107678565A (zh) | 2018-02-09 |
Family
ID=61142505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711048070.4A Pending CN107678565A (zh) | 2017-10-31 | 2017-10-31 | 一种对象切换的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107678565A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130234948A1 (en) * | 2012-03-11 | 2013-09-12 | Jing Jian | Selecting and Updating Location of Virtual Keyboard in a GUI Layout in Response to Orientation Change of a Portable Device |
CN106502573A (zh) * | 2016-11-22 | 2017-03-15 | 天脉聚源(北京)传媒科技有限公司 | 一种视图界面移动的方法及装置 |
CN106873876A (zh) * | 2017-03-20 | 2017-06-20 | 山东大学 | 一种动态切换Android系统输入法的弹出模式的方法 |
CN106909393A (zh) * | 2017-03-01 | 2017-06-30 | 腾讯科技(深圳)有限公司 | 一种输入法面板的显示调整方法及移动终端 |
-
2017
- 2017-10-31 CN CN201711048070.4A patent/CN107678565A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130234948A1 (en) * | 2012-03-11 | 2013-09-12 | Jing Jian | Selecting and Updating Location of Virtual Keyboard in a GUI Layout in Response to Orientation Change of a Portable Device |
CN106502573A (zh) * | 2016-11-22 | 2017-03-15 | 天脉聚源(北京)传媒科技有限公司 | 一种视图界面移动的方法及装置 |
CN106909393A (zh) * | 2017-03-01 | 2017-06-30 | 腾讯科技(深圳)有限公司 | 一种输入法面板的显示调整方法及移动终端 |
CN106873876A (zh) * | 2017-03-20 | 2017-06-20 | 山东大学 | 一种动态切换Android系统输入法的弹出模式的方法 |
Non-Patent Citations (2)
Title |
---|
JACKSGONG: "Android键盘面板冲突布局闪动处理方案", 《HTTPS://GITHUB.COM/JACKSGONG/JKEYBOARDPANELSWITCH/TREE/22ABDDDA42496044361CCD6D0BF6635F8607CE6C》 * |
泽坚同学: "android高仿微信表情输入与键盘输入代码(详细实现分析)", 《HTTPS://M.JB51.NET/ARTICLE/101457.HTM》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10715997B2 (en) | Method for protecting private information and terminal device | |
CN103886025B (zh) | 网页中图片的显示方法和装置 | |
JP5725533B2 (ja) | 情報処理装置および入力方法 | |
US20140002396A1 (en) | Information processing method, information processing apparatus and electronic device | |
CN104536715A (zh) | 一种显示方法及电子设备 | |
CN107508961A (zh) | 一种活动窗口启动方法、终端及计算机可读存储介质 | |
EP2869174A1 (en) | Method and device for text input and display of intelligent terminal | |
CN103297606A (zh) | 一种控制电子设备的方法及电子设备 | |
CN109407929B (zh) | 一种桌面图标的整理方法及终端 | |
EP3040840A1 (en) | Interface processing method, device, terminal and computer storage medium | |
CN104808900B (zh) | 一种控制方法及电子设备 | |
CN112703534B (zh) | 图像处理方法及相关产品 | |
CN103353826B (zh) | 一种显示设备及其信息处理方法 | |
CN108762604A (zh) | 一种显示方法、装置及电子设备 | |
CN110134237A (zh) | 界面控制方法及相关设备 | |
CN104850340A (zh) | 触控显示屏上的文档显示方法及装置 | |
CN104809416B (zh) | 显示画面遮蔽方法、电子装置与计算机程序产品 | |
US20170060334A1 (en) | Method and apparatus for controlling touch device, and touch device | |
CN106201295A (zh) | 一种消息复制方法和装置、以及智能终端 | |
WO2018000606A1 (zh) | 一种虚拟现实交互界面的切换方法和电子设备 | |
CN107979701B (zh) | 控制终端显示的方法及装置 | |
CN107609433A (zh) | 隐私保护方法及电子设备 | |
CN107678565A (zh) | 一种对象切换的方法及装置 | |
CN104049843B (zh) | 一种信息处理方法及电子设备 | |
CN103034418B (zh) | 控制操作栏滚动的方法、装置及移动终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180209 |