CN106775195B - 一种悬浮按钮的控制方法及装置 - Google Patents

一种悬浮按钮的控制方法及装置 Download PDF

Info

Publication number
CN106775195B
CN106775195B CN201611032468.4A CN201611032468A CN106775195B CN 106775195 B CN106775195 B CN 106775195B CN 201611032468 A CN201611032468 A CN 201611032468A CN 106775195 B CN106775195 B CN 106775195B
Authority
CN
China
Prior art keywords
screen
soft keyboard
height
suspension button
height value
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.)
Active
Application number
CN201611032468.4A
Other languages
English (en)
Other versions
CN106775195A (zh
Inventor
肖剑锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
World (beijing) Network Technology Co Ltd
Original Assignee
World (beijing) Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by World (beijing) Network Technology Co Ltd filed Critical World (beijing) Network Technology Co Ltd
Priority to CN201611032468.4A priority Critical patent/CN106775195B/zh
Publication of CN106775195A publication Critical patent/CN106775195A/zh
Application granted granted Critical
Publication of CN106775195B publication Critical patent/CN106775195B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486Drag-and-drop

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)
  • Input From Keyboards Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了一种悬浮按钮的控制方法及装置。所述方法包括:实时监听屏幕的高度变化情况;根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;检测所述屏幕上的悬浮按钮的位置;若检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,则控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。该悬浮按钮的控制方法及装置,能够自动控制悬浮按钮不与屏幕上弹出的软键盘相重叠,智能化程度高,使用便利。

Description

一种悬浮按钮的控制方法及装置
技术领域
本发明涉及智能终端技术领域,特别涉及一种悬浮按钮的控制方法及装置。
背景技术
随着智能移动终端的发展,带有各种功能的悬浮按钮出现在越来越多的智能终端上,很多智能终端用户往往会选择安装一款带悬浮按钮的应用,这些应用通过悬浮按钮能够悬浮于所有窗口之上的优势为用户提供了大量便捷的操作,例如可以实现虚拟返回键、home键、菜单键、各种系统功能的快捷设置等等,不仅使用户可以快速执行某项快捷操作,同时节省了智能终端自身功能按键的使用。例如,通过安装EasyTouch、悬浮按钮大师等应用,就可以采用悬浮按钮实现悬浮按钮功能,从而替代智能终端的系统按键,节省系统按键的使用,延长系统按键甚至智能终端的使用寿命。通过悬浮按钮触发悬浮窗,还可以提供更多的功能,如:提供给用户快捷的联系人界面,用户可以通过单手就可以调出常用的联系人信息;也可以提供常用的应用列表,从而使用户可以快速的跳转到需要的应用;还可以提供很多系统设置功能,如手电筒、蓝牙开关、wifi、移动网络、调节音量大小、调节屏幕亮度等等。
虽然悬浮按钮具有如此多的好处,但有些时候也会给使用者带来一些困惑或者体验不好的地方。例如,在某个输入界面(信息编辑区域),用户想要输入文字,此时点击编辑框后会弹出输入法软键盘界面,这个软键盘界面往往出现在智能终端的下半部分,并且占用了小半个屏幕大小的区域。此时,由于悬浮按钮可能出现在当前屏幕的任何位置,通常悬浮按钮处于所有界面之上,从而使得悬浮按钮可能出现软键盘界面之上,与软键盘形成重叠,导致在点击重叠区域进行文字输入时,往往优先触发悬浮按钮的点击事件,从而影响软键盘的正常文字输入。用户要进行文字输入,需要通过手动拖动悬浮按钮的方式将其移动到不影响输入的地方,或者长按悬浮按钮将其隐藏,但是这些操作都需要使用者手动干预,智能化程度低,用户体验较差。
发明内容
本发明实施例提供一种悬浮按钮的控制方法及装置,能够自动控制悬浮按钮不与屏幕上弹出的软键盘相重叠,智能化程度高,使用便利。
一方面,本发明实施例提供了一种悬浮按钮的控制方法,包括:
实时监听屏幕的高度变化情况;
根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;
检测所述屏幕上的悬浮按钮的位置;
若检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,则控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。
优选的,在检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示后,所述方法还包括:
监听所述屏幕上的软键盘的变化情况;
监听到所述屏幕上的软键盘发生关闭后,检测是否接收到对所述虚拟键盘的位置调整操作指令;
如果是,则在所述位置调整操作指令所指示的位置显示所述悬浮按钮;否则,将所述悬浮按钮恢复到所述软键盘弹出前的位置进行显示。
优选的,所述控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示,包括:
获取所述屏幕的高度值;
根据所述软键盘的位置检测结果,确定所述软键盘的高度值;
根据所述屏幕上的悬浮按钮的位置检测结果,确定所述悬浮按钮的高度值;
计算所述屏幕的高度值减去所述软键盘的高度值、所述悬浮按钮的高度值所得到的差值,并将所述差值作为所述悬浮按钮的显示高度值;
控制所述悬浮按钮按照所述显示高度值或者大于所述显示高度值的高度在所述软键盘之外的屏幕位置进行显示。
优选的,所述在实时监听所述屏幕的高度变化情况之前,所述方法还包括:
在Service服务进程中,创建屏幕监听器,将所述屏幕监听器的高度设置为所述屏幕的高度、宽度设置为零,并将所述屏幕监听器的格式属性设置为透明,从而使得所述屏幕监听器在不可见的情况下,实时对所述屏幕的高度变化情况进行监听。
优选的,所述根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘,包括:
当检测到所述屏幕的高度发生变化时,计算所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值;
比较所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值的绝对值,与所述软键盘的高度值的大小;
如果所述绝对值大于或等于所述软件盘的高度值,则确定所述屏幕上弹出软键盘。
另一方面,本发明实施例提供了一种悬浮按钮的控制装置,包括:
第一监听单元,用于实时监听屏幕的高度变化情况;
第一检测单元,用于根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;
第二检测单元,用于检测所述屏幕上的悬浮按钮的位置;
控制单元,用于检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠后,控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。
优选的,所述装置还包括:
第二监听单元,用于在检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示后,监听所述屏幕上的软键盘的变化情况;
第三检测单元,用于监听到所述屏幕上的软键盘发生关闭后,检测是否接收到对所述虚拟键盘的位置调整操作指令;
显示单元,用于在接收到对所述虚拟键盘的位置调整操作指令后,在所述位置调整操作指令所指示的位置显示所述悬浮按钮;否则,将所述悬浮按钮恢复到所述软键盘弹出前的位置进行显示。
优选的,所述控制单元,包括:
获取模块,用于获取所述屏幕的高度值;
第一确定模块,用于根据所述软键盘的位置检测结果,确定所述软键盘的高度值;
第二确定模块,用于根据所述屏幕上的悬浮按钮的位置检测结果,确定所述悬浮按钮的高度值;
计算模块,用于计算所述屏幕的高度值减去所述软键盘的高度值、所述悬浮按钮的高度值所得到的差值,并将所述差值作为所述悬浮按钮的显示高度值;
控制模块,用于控制所述悬浮按钮按照所述显示高度值或者大于所述显示高度值的高度在所述软键盘之外的屏幕位置进行显示。
优选的,所述装置还包括:
创建单元,用于在Service服务进程中,创建屏幕监听器,将所述屏幕监听器的高度设置为所述屏幕的高度、宽度设置为零,并将所述屏幕监听器的格式属性设置为透明,从而使得所述屏幕监听器在不可见的情况下,对所述屏幕的高度变化情况进行监听。
优选的,第一确定模块,包括:
计算子模块,用于当检测到所述屏幕的高度发生变化时,计算所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值;
比较子模块,用于比较所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值的绝对值,与所述软键盘的高度值的大小;
确定子模块,用于在所述绝对值大于或等于所述软件盘的高度值时,确定所述屏幕上弹出软键盘。
本发明实施例提供的悬浮按钮的控制方法及装置,通过实时监听屏幕的高度变化情况;根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;检测所述屏幕上的悬浮按钮的位置;若检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,则控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。该控制方法及装置能够自动控制悬浮按钮不与屏幕上弹出的软键盘相重叠,智能化程度高,使用便利。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例提供的一种悬浮按钮的控制方法的流程图;
图2为本发明实施例提供的一种悬浮按钮在弹出软键盘之前的显示位置的示意图;
图3为本发明实施例提供的一种悬浮按钮在屏幕上显示位置的示意图;
图4为本发明实施例提供的一种悬浮按钮的控制装置的框图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
在此对本专利申请中用到的部分专用术语解释如下:
悬浮按钮:智能终端在开启之后,在屏幕当中出现的圆形或者其它形状的虚拟按钮,可以随意拖动到屏幕上的任意位置,并且可以悬浮于大多数的应用界面之上。
Android:中文名称为安卓,是一种基于Linux的自由及开放源代码的操作系统,主要用于智能移动终端设备,如智能智能终端和平板电脑,由Google公司和开放智能终端联盟领导及开发。
软键盘:不同于实际的键盘,其显示在“屏幕”上,通过软件模拟键盘实现的一个图形化的键盘,通过触屏可以点击输入字符,文字等。现在主流的智能机文字输入基本都是靠软键盘实现的。
Service:是Android四大组件之一,一个Service是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。它可以单独放到一个进程中执行,称为Service服务进程。
Handler:Handler是Android中的一个消息分发对象。而消息分发,有赖于消息循环,也就是Looper。在一个线程中,Looper阻塞线程,等待消息构成循环,有了消息,分配到对应的Handler,让它进一步分发处理。
本发明实施例提供一种悬浮按钮的控制方法,如图1所示,包括步骤S101-S104:
步骤S101:实时监听屏幕的高度变化情况;
步骤S102:根据屏幕的高度变化情况,确定屏幕上弹出软键盘后,检测软键盘的位置;
步骤S103:检测屏幕上的悬浮按钮的位置;
步骤S104:若检测到软键盘的位置和所述悬浮按钮的位置发生重叠,则控制悬浮按钮在软键盘之外的屏幕位置进行显示。
本实施例中的相关技术细节说明如下:
本实施例以安卓系统为例进行说明,悬浮按钮所在的应用在首次安装后需要启动才能运行,然后启动一个Service服务进程来对悬浮按钮进行管理和逻辑控制,是因为Service可以在后台始终保持运行,具有不容易被杀死,不需要启动可视化界面支持的优点,并且在手机系统重启后,还可以通过本地注册的系统广播消息,例如,手机启动的广播,网络状态变化的广播,蓝牙状态变化,WiFi状态变化等等,只要是系统类的广播消息都可以将其启动起来,生命力非常强,所以选择Service作为实现悬浮按钮的载体。
创建悬浮按钮,按钮进入待机状态,监听点击事件:悬浮按钮本身是一个RelativeLayout(相对布局),其内部由一个ImageView(图片控件)实现按钮的显示,利用了WindowManager(窗口管理器)的addview方法添加到窗口管理器中的,通过设置其LayoutParams(布局参数)的type的属性为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT(一种系统警告类型的属性),来实现悬浮于大多数应用窗口之上,因为TYPE_SYSTEM_ALERT是一个非常高的优先级,设置后可以使悬浮按钮的优先级大于其他大部分窗口,在显示时,自然就会处于其它窗口之上。同时给悬浮按钮设置单击、长按、双击、移动等的监听事件,悬浮按钮在收到不同的事件后,会进行不同的处理。如单击悬浮按钮,会打开悬浮窗,进行虚拟按键功能的使用,同时隐藏悬浮按钮。
在另外一个实施例中,在检测到软键盘的位置和悬浮按钮的位置发生重叠,控制悬浮按钮在软键盘之外的屏幕位置进行显示后,所述方法还包括以下步骤S201-S203:
步骤S201:监听屏幕上的软键盘的变化情况;
步骤S202:监听到屏幕上的软键盘发生关闭后,检测是否接收到对所述虚拟键盘的位置调整操作指令;
步骤S203:如果是,则在位置调整操作指令所指示的位置显示悬浮按钮;否则,将悬浮按钮恢复到软键盘弹出前的位置进行显示。
具体而言,如果Service服务进程收到的是软键盘关闭的消息,处理逻辑如下所示:
首先,判断避让软键盘的标志是否为true,即isNeedRelocation是否等于true,如果为true,说明之前避让过软键盘,需要在软键盘关闭后将其恢复到原来的位置(如图2所示软键盘弹出前的位置)进行显示。
其次,将之前保存到内存gButtonY(保存悬浮按钮之前的高度值变量)中的值取出,赋值给悬浮按钮的高度坐标值params.y,然后调用Window Manager(窗口管理器)的updateViewLayout方法更新悬浮按钮的显示,即将其还原到之前的位置,然后将代表避让软键盘的标志isNeedRelocation置为false。这样就完成了悬浮按钮在软键盘关闭的情况下自动还原到原来位置的流程。软键盘关闭后,效果图还原为类似如图2所示,悬浮按钮又会回到原来的屏幕右下角的位置,只不过这时编辑框中多了之前输入的文字。
需要说明的是,此处还有个特殊情况,即当用户在悬浮按钮避让软键盘后,用户手动调整了悬浮按钮的位置,比如将其拖动到了任意位置,这时软键盘在关闭后,悬浮按钮是不会回到原来位置的。此中断还原的方法是通过在悬浮按钮的GestureDetector.SimpleOnGestureListener监听器中实现的,这个监听器用来监听悬浮按钮的拖动情况,如果它被拖动会触发这个监听器中的onScroll回调方法,在此回调中,只要将避让软键盘的标志置为false,即可避免自动还原的功能生效了。
在另外一个实施例中,如图3所示,为本发明实施例提供的一种悬浮按钮在屏幕上显示位置的示意图,从图中可以看到悬浮按钮紧靠软键盘的上边缘进行显示,从而有效防止软键盘与悬浮按钮进行重叠。上述步骤S104中的控制悬浮按钮在软键盘之外的屏幕位置进行显示,可以包括以下步骤S301-S305:
步骤S301:获取屏幕的高度值;
步骤S302:根据软键盘的位置检测结果,确定软键盘的高度值;
步骤S303:根据屏幕上的悬浮按钮的位置检测结果,确定悬浮按钮的高度值;
步骤S304:计算屏幕的高度值减去软键盘的高度值、悬浮按钮的高度值所得到的差值,并将所述差值作为悬浮按钮的显示高度值;
步骤S305:控制悬浮按钮按照显示高度值或者大于显示高度值的高度在软键盘之外的屏幕位置进行显示。
具体而言,当屏幕由非全屏切换到全屏,或者由全屏切到非全屏,或者高度变化的值和软键盘高度值相差较大,这几种状态都要进行各自的功能逻辑处理。其中,当前高度h值与屏幕高度screenHeight作比较,如果结果相等,说明当前变化到了全屏状态;如果结果不相等,则认为是从全屏状态退出到了非全屏状态。如果都不是这些情况,而是当前高度h值与变化之前的高度值oldh之间的差值小于代表软键盘的高度,则表示其它情况导致了屏幕界面变化,如状态栏隐藏或显示等。
其它功能逻辑处理:如当前界面是全屏和非全屏的状态相互切换时,则调用悬浮按钮全屏隐藏或者显示的逻辑;如果窗口变化较小,则调用状态栏显示或隐藏,或者其它功能逻辑处理,或者不处理。然后悬浮按钮继续保持FloatMonitor的监听状态。
在另外一个实施例中,上述悬浮按钮的控制方法,在实时监听屏幕的高度变化情况之前,还包括以下步骤:在Service服务进程中,创建屏幕监听器,将屏幕监听器的高度设置为屏幕的高度、宽度设置为零,并将屏幕监听器的格式属性设置为透明,从而使得屏幕监听器在不可见的情况下,实时对屏幕的高度变化情况进行监听。
以下对本发明实施例进行具体说明:
具体而言,可以通过在悬浮按钮所在的Service服务进程中创建一个屏幕(窗口)监听器,来对屏幕(窗口)的高度进行监听,一旦有变化就会做出响应。该监听器的父类实质上是一个View(视图),在其被创建后,会将其添加到窗口管理器中,使得该View(视图)高度等于屏幕高度,宽度等于零,这样它就不能被用户所看到,但是它可以监听到屏幕(窗口)的高度变化。
当这个监听器收到窗口变化时,会触发其onSizeChanged方法,该方法是View的重载方法,当窗口发生变化时会回调到此方法,在其方法内部,判断当前View(视图)的高度变化差值是否大于或等于软键盘的高度值。如果大于或等于软键盘的高度值,说明当前界面弹出了默认输入法所对应的软键盘。在判断弹出软件盘后,可以再进一步判断当前是否进行了横竖屏切换,因为横竖屏切换也会导致界面窗口有较大的变化。其中,横竖屏切换可以通过判断onConfigurationChanged回调方法(基类的一个重载方法,在横竖屏相互变化时会回调到此方法)有没有触发来决定,如果判断没有发生横竖屏切换后,则可以确定在当前屏幕中弹出了软键盘。
另外,需要说明的是,由于同一智能终端(例如手机)上可能会安装多个输入法,软键盘的高度可能会略有不同,而不同手机由于分辨率不同,软键盘的高度也会不同,因此,此处可使用一个经验值,例如100dp作为软件盘的高度值来进行判断。此处的100dp仅仅是示意性的,并不用于限制本发明,在实际使用中可以根据经验或试验情况,采用其他更为合适的值,本发明实施例不做具体限定。
在View(视图)的监听器中,如果确定界面(屏幕窗口)发生了变化,并且变化是由于弹出或者关闭软键盘导致的,将通过Handler给Service服务进程发送消息,由Service服务进程进行消息处理。这里需要注意的是界面发生变化会有多种情况,需要将非此功能的情况过滤掉。比如全屏和非全屏界面的相互切换;界面变化很小,不是通过弹出软键盘导致的等等,这些情况会对应不同的功能逻辑,需要将其过滤出来,使用各自对应的流程来处理。
对于弹出和关闭软键盘时,这里分两种情况进行逻辑处理:
1、如果当前界面变化后,监听器的高度值小于变化前的高度值,说明此时弹出软键盘,需要发送软键盘弹出的自定义消息,这个消息我们可以定义为KEYBOARD_CHANGE_INPUTMETHOD_OPEN,它是一个公有静态整型常量,赋值为1;
2、如果当前界面变化后,监听器的高度值大于变化前的高度值,说明此时软键盘关闭了或者当前界面关闭了,需要发送软键盘关闭的自定义消息,这个消息我们可以定义为KEYBOARD_CHANGE_INPUTMETHOD_CLOSE,它是一个公有静态整型常量,赋值为2;
Service服务进程在收到这两种消息后,分别进行处理如下:
如果收到的是软键盘打开的消息,首先会计算当前悬浮按钮所在的高度坐标值buttonY是否大于屏幕高度screenHeight减去软键盘的高度keyboard_height,如果结果为true,说明悬浮按钮的高度值在软键盘的显示范围之内,即两者出现了重叠,需要调整悬浮按钮的显示位置,达到避让软键盘的目的。具体实现过程如下:
1、设置避让软键盘的标志为true,假设我们使用isNeedRelocation这个布尔型变量来表示这个标志;
2、将悬浮按钮以前的坐标值进行保存,一般保存到内存中即可,我们使用gButtonY变量(保存悬浮按钮之前的高度值变量)进行保存;
3、给悬浮按钮计算一个新的高度坐标值,一般使用这样的方法,params.y(新高度值)=screenHeight(屏幕高度)-keyboard_height(软键盘高度)-buttonHeight(悬浮按钮的高度),即新高度值等于屏幕高度减去软键盘高度,再减去悬浮按钮的高度,即悬浮按钮出现在软键盘最上方的边缘位置。
4、使用WindowManager(窗口管理器)的updateViewLayout方法更新悬浮按钮的显示位置。如图3所示,为本发明实施例提供的一种悬浮按钮在屏幕上显示位置的示意图,从图中可以看到悬浮按钮紧靠软键盘的上边缘进行显示,从而有效防止软键盘与悬浮按钮进行重叠。
在另外一个实施例中,上述步骤S102中的根据屏幕的高度变化情况,确定屏幕上弹出软键盘,包括以下步骤S401-S403:
步骤S401:当检测到屏幕的高度发生变化时,计算屏幕变化后的高度值与屏幕变化前的高度值的差值;
步骤S402:比较屏幕变化后的高度值与屏幕变化前的高度值的差值的绝对值,与软键盘的高度值的大小;
步骤S403:如果绝对值大于或等于软件盘的高度值,则确定屏幕上弹出软键盘。
需要说明的上,本专利申请以上实施例是通过监听系统窗口变化方式实现的,不会消耗系统的内存和电量等资源,节约资源,实际使用价值大。另外,避让软键盘功能可以通过一个开关进行控制,用户可以根据需求自由切换开关,在开关关闭时,自动避让软键盘,而在打开时生效。此功能有效解决了用户在文字输入状态下,悬浮按钮和软键盘界面冲突导致的功能不能正确响应,解决了用户的实际问题,提高了用户对此应用的用户体验度。
本发明实施例提供的悬浮按钮的控制方法,通过实时监听屏幕的高度变化情况;根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;检测所述屏幕上的悬浮按钮的位置;若检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,则控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。该控制方法及装置能够自动控制悬浮按钮不与屏幕上弹出的软键盘相重叠,智能化程度高,使用便利。
相应地,本发明实施例另外提供一种悬浮按钮的控制装置,如图4所示,包括:
第一监听单元501,用于实时监听屏幕的高度变化情况;
第一检测单元502,用于根据屏幕的高度变化情况,确定屏幕上弹出软键盘后,检测软键盘的位置;
第二检测单元503,用于检测屏幕上的悬浮按钮的位置;
控制单元504,用于检测到软键盘的位置和悬浮按钮的位置发生重叠后,控制悬浮按钮在软键盘之外的屏幕位置进行显示。
在另外一个实施例中,上述装置还包括:
第二监听单元,用于在检测到软键盘的位置和悬浮按钮的位置发生重叠,控制悬浮按钮在所述软键盘之外的屏幕位置进行显示后,监听屏幕上的软键盘的变化情况;
第三检测单元,用于监听到屏幕上的软键盘发生关闭后,检测是否接收到对虚拟键盘的位置调整操作指令;
显示单元,用于在接收到对虚拟键盘的位置调整操作指令后,在位置调整操作指令所指示的位置显示所述悬浮按钮;否则,将悬浮按钮恢复到软键盘弹出前的位置进行显示。
在另外一个实施例中,所述控制单元,包括:
获取模块,用于获取屏幕的高度值;
第一确定模块,用于根据软键盘的位置检测结果,确定软键盘的高度值;
第二确定模块,用于根据屏幕上的悬浮按钮的位置检测结果,确定悬浮按钮的高度值;
计算模块,用于计算屏幕的高度值减去软键盘的高度值、悬浮按钮的高度值所得到的差值,并将差值作为悬浮按钮的显示高度值;
控制模块,用于控制悬浮按钮按照显示高度值或者大于显示高度值的高度在软键盘之外的屏幕位置进行显示。
在另外一个实施例中,上述装置还包括:
创建单元,用于在Service服务进程中,创建屏幕监听器,将屏幕监听器的高度设置为屏幕的高度、宽度设置为零,并将屏幕监听器的格式属性设置为透明,从而使得屏幕监听器在不可见的情况下,对屏幕的高度变化情况进行监听。
在另外一个实施例中,上述第一确定模块,包括:
计算子模块,用于当检测到屏幕的高度发生变化时,计算屏幕变化后的高度值与屏幕变化前的高度值的差值;
比较子模块,用于比较屏幕变化后的高度值与屏幕变化前的高度值的差值的绝对值,与软键盘的高度值的大小;
确定子模块,用于在绝对值大于或等于软件盘的高度值时,确定屏幕上弹出软键盘。
本发明实施例提供的悬浮按钮的控制装置,通过实时监听屏幕的高度变化情况;根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;检测所述屏幕上的悬浮按钮的位置;若检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,则控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。该控制装置能够自动控制悬浮按钮不与屏幕上弹出的软键盘相重叠,智能化程度高,使用便利。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种悬浮按钮的控制方法,其特征在于,包括:
实时监听屏幕的高度变化情况;
根据所述屏幕的高度变化情况,且判断没有发生横竖屏切换,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;
检测所述屏幕上的悬浮按钮的位置;
若检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,则控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示;
所述控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示,包括:
获取所述屏幕的高度值;
根据所述软键盘的位置检测结果,确定所述软键盘的高度值;
根据所述屏幕上的悬浮按钮的位置检测结果,确定所述悬浮按钮的高度值;
计算所述屏幕的高度值减去所述软键盘的高度值、所述悬浮按钮的高度值所得到的差值,并将所述差值作为所述悬浮按钮的显示高度值;
控制所述悬浮按钮按照所述显示高度值或者大于所述显示高度值的高度在所述软键盘之外的屏幕位置进行显示。
2.根据权利要求1所述的方法,其特征在于,在检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示后,所述方法还包括:
监听所述屏幕上的软键盘的变化情况;
监听到所述屏幕上的软键盘发生关闭后,检测是否接收到对所述悬浮按钮的位置调整操作指令;
如果是,则在所述位置调整操作指令所指示的位置显示所述悬浮按钮;否则,将所述悬浮按钮恢复到所述软键盘弹出前的位置进行显示。
3.根据权利要求1所述的方法,其特征在于,在所述实时监听所述屏幕的高度变化情况之前,所述方法还包括:
在Service服务进程中,创建屏幕监听器,将所述屏幕监听器的高度设置为所述屏幕的高度、宽度设置为零,并将所述屏幕监听器的格式属性设置为透明,从而使得所述屏幕监听器在不可见的情况下,实时对所述屏幕的高度变化情况进行监听。
4.根据权利要求3所述的方法,其特征在于,所述根据所述屏幕的高度变化情况,确定所述屏幕上弹出软键盘,包括:
当检测到所述屏幕的高度发生变化时,计算所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值;
比较所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值的绝对值,与所述软键盘的高度值的大小;
如果所述绝对值大于或等于所述软键盘的高度值,则确定所述屏幕上弹出软键盘。
5.一种悬浮按钮的控制装置,其特征在于,包括:
第一监听单元,用于实时监听屏幕的高度变化情况;
第一检测单元,用于根据所述屏幕的高度变化情况,且判断没有发生横竖屏切换,确定所述屏幕上弹出软键盘后,检测所述软键盘的位置;
第二检测单元,用于检测所述屏幕上的悬浮按钮的位置;
控制单元,用于检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠后,控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二监听单元,用于在检测到所述软键盘的位置和所述悬浮按钮的位置发生重叠,控制所述悬浮按钮在所述软键盘之外的屏幕位置进行显示后,监听所述屏幕上的软键盘的变化情况;
第三检测单元,用于监听到所述屏幕上的软键盘发生关闭后,检测是否接收到对所述悬浮按钮的位置调整操作指令;
显示单元,用于在接收到对所述悬浮按钮的位置调整操作指令后,在所述位置调整操作指令所指示的位置显示所述悬浮按钮;否则,将所述悬浮按钮恢复到所述软键盘弹出前的位置进行显示;所述控制单元,包括:
获取模块,用于获取所述屏幕的高度值;
第一确定模块,用于根据所述软键盘的位置检测结果,确定所述软键盘的高度值;
第二确定模块,用于根据所述屏幕上的悬浮按钮的位置检测结果,确定所述悬浮按钮的高度值;
计算模块,用于计算所述屏幕的高度值减去所述软键盘的高度值、所述悬浮按钮的高度值所得到的差值,并将所述差值作为所述悬浮按钮的显示高度值;
控制模块,用于控制所述悬浮按钮按照所述显示高度值或者大于所述显示高度值的高度在所述软键盘之外的屏幕位置进行显示。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
创建单元,用于在Service服务进程中,创建屏幕监听器,将所述屏幕监听器的高度设置为所述屏幕的高度、宽度设置为零,并将所述屏幕监听器的格式属性设置为透明,从而使得所述屏幕监听器在不可见的情况下,对所述屏幕的高度变化情况进行监听。
8.根据权利要求7所述的装置,其特征在于,第一确定模块,包括:
计算子模块,用于当检测到所述屏幕的高度发生变化时,计算所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值;
比较子模块,用于比较所述屏幕变化后的高度值与所述屏幕变化前的高度值的差值的绝对值,与所述软键盘的高度值的大小;
确定子模块,用于在所述绝对值大于或等于所述软键盘的高度值时,确定所述屏幕上弹出软键盘。
CN201611032468.4A 2016-11-16 2016-11-16 一种悬浮按钮的控制方法及装置 Active CN106775195B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611032468.4A CN106775195B (zh) 2016-11-16 2016-11-16 一种悬浮按钮的控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611032468.4A CN106775195B (zh) 2016-11-16 2016-11-16 一种悬浮按钮的控制方法及装置

Publications (2)

Publication Number Publication Date
CN106775195A CN106775195A (zh) 2017-05-31
CN106775195B true CN106775195B (zh) 2018-09-18

Family

ID=58971696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611032468.4A Active CN106775195B (zh) 2016-11-16 2016-11-16 一种悬浮按钮的控制方法及装置

Country Status (1)

Country Link
CN (1) CN106775195B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463327B (zh) * 2017-07-20 2019-12-17 福建网龙计算机网络信息技术有限公司 一种获取界面控件元素位置信息的方法及终端
CN107340886B (zh) * 2017-08-04 2023-04-18 腾讯科技(深圳)有限公司 一种软键盘状态确定方法、装置、介质及终端
CN107908354A (zh) * 2017-10-23 2018-04-13 林楚莲 一种触摸屏虚拟按钮控制方法及装置
CN110058769B (zh) * 2019-04-16 2023-11-21 西藏瀚灵科技有限公司 悬浮按钮位置的调整方法、装置、终端及存储介质
CN111913640A (zh) * 2019-05-09 2020-11-10 上海触乐信息科技有限公司 基于输入法键盘的信息呈现的方法及设备
CN114090138A (zh) * 2020-07-03 2022-02-25 北京沃东天骏信息技术有限公司 一种页面显示方法和装置
CN113312124A (zh) * 2021-03-30 2021-08-27 海南视联通信技术有限公司 一种软键盘弹出调用方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679436A (zh) * 2015-03-27 2015-06-03 张铭鑫 基于触摸屏的悬浮按键及装置
CN104823150A (zh) * 2013-02-27 2015-08-05 夏普株式会社 信息终端和控制程序

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110267367A1 (en) * 2010-04-30 2011-11-03 Acer Incorporated Handheld electric apparatus and graphic interface operation method
CN105912348A (zh) * 2016-06-02 2016-08-31 浪潮软件集团有限公司 一种手机app软件文本框随软键盘自适应位置的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104823150A (zh) * 2013-02-27 2015-08-05 夏普株式会社 信息终端和控制程序
CN104679436A (zh) * 2015-03-27 2015-06-03 张铭鑫 基于触摸屏的悬浮按键及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Android监听软键盘的显示与隐藏;吧主;《url:http://blog.csdn.net/xiaole0313/article/details/51537809》;20160530;第3-5页 *

Also Published As

Publication number Publication date
CN106775195A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106775195B (zh) 一种悬浮按钮的控制方法及装置
AU2017204611B2 (en) Widget setting method and terminal device
CN109062479B (zh) 分屏应用切换方法、装置、存储介质和电子设备
CN106970735B (zh) 一种信息处理方法及电子设备
EP4002075A1 (en) Interface display method and apparatus, terminal, and storage medium
CN107508990A (zh) 一种分屏显示的方法以及终端设备
EP3133481B1 (en) Terminal device display method and terminal device
CN103902359B (zh) 基于Android系统内存优化与应用调度方法及系统
WO2018076673A1 (zh) 应用图标显示控制方法、装置及终端
CN108595236A (zh) 一种防止子线程进行用户界面操作的方法及装置
CN104731500B (zh) 一种信息处理方法及电子设备
US11934648B2 (en) Permission setting method and apparatus and electronic device
CN106412237A (zh) 一种智能终端的悬浮按钮的控制方法及装置
CN106547429B (zh) 用于电子终端的显示方法及装置
CN104866206A (zh) 一种图片数据的移动方法及移动终端
CN104808906A (zh) 具有触摸显示屏的电子设备及触摸显示屏控制方法
CN108495169A (zh) 信息展示方法及装置
US20160259513A1 (en) Alarm-position display apparatus and alarm-position display method
CN106775213B (zh) 一种切换桌面的方法及终端
CN108845752A (zh) 触控操作方法、装置、存储介质及电子设备
CN110162249A (zh) 一种控制应用程序图标的方法及装置、设备和存储介质
CN102411467B (zh) 电子设备及其内容管理方法
CN104516618B (zh) 界面功能解析显示方法及装置
CN107111512A (zh) 实现对另一操作系统操作的方法、装置及电子设备
CN106708369A (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
GR01 Patent grant
GR01 Patent grant