1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android 输入法更换_一种动态切换Android系统输入法的弹出模式的方法与流程

android 输入法更换_一种动态切换Android系统输入法的弹出模式的方法与流程

时间:2021-09-01 17:19:27

相关推荐

android 输入法更换_一种动态切换Android系统输入法的弹出模式的方法与流程

本发明涉及一种Android系统利用动态切换输入法的弹出模式解决输入法跳闪抖动问题的方法,属于安卓系统技术领域。

背景技术:

随着Android系统的快速发展以及安卓手机的不断普及,基于Android系统的应用不断地推陈出新,层出不穷。人们在日常生活中使用这些应用软件进行社交、读书、获取资讯、娱乐等等已经演变成一种生活习惯。层出不穷的社交类软件更成为手机用户使用频率最高的软件。表情包一直是各类具有社交属性APP的必备属性,从最早的QQ,到现在的微信,微博,陌陌,以及各类带有社交属性的APP,如唱吧,支付宝等等。

我们在使用社交软件进行聊天的过程中经常会输入表情,往往我们在切换输入法和表情面板时会出现抖动,比如,当表情显示时,我们点击表情按钮,想要隐藏表情显示软键盘时,内容Bar有一个明显的先向下后恢复的跳闪抖动现象,这里我们约定,我们把含有表情的那个面板称为内容面板,这种抖动的体验大大降低了用户的使用体验。具体是怎样的抖动呢?我们以一个常用的微博应用为例,其具体表现为:表情面板隐藏,而软键盘向上拖出瞬间,Activity高度变高,内容Bar往下滑动后又被软键盘顶回原来的位置,最终让界面产生了高度差抖动,所以在切换时明显会有不大好的抖动体验。而我们希望的是无论怎么切换都不会有跳闪抖动现象,这就是键盘与表情切换的抖动问题。如此就急需一种解决方案,解决输入法与表情面板切换时的界面跳闪抖动问题。

技术实现要素:

针对现有技术的不足,本发明提供了一种利用动态切换输入法的弹出模式解决Android系统应用软件切换输入法时抖动问题的方法;

本发明适用于Android系统智能移动终端,本发明解决了Android系统中用户在切换输入法和其它应用的表情面板时输入法跳闪抖动的问题,使得切换更加平滑,大大提高了用户体验。

术语解释:

1、adjustResize模式:android:windowSoftInputMode属性中的一个取值,表示输入法弹出时Activity的主窗口总是调整屏幕的大小用以保证软键盘的显示空间。

2、adjustNothing模式:android:windowSoftInputMode属性中的一个取值,表示弹出输入法时,不会对Activity进行调整,Activity不会有任何变化。

3、Activity:Android应用中负责与用户交互的组件,为Android应用提供可视化用户界面。

4、EditText:接受用户输入信息的最重要控件,这里指输入框。

5、Layout:Android应用的界面布局。

本发明的技术方案为:

一种动态切换Android系统输入法的弹出模式的方法,包括步骤如下:

(1)初始状态下,即软键盘和表情面板都未展开时,为表情面板设置一个默认高度,默认高度的取值范围是230dp-270dp,该默认高度可以保证表情面板正常显示,默认高度的取值范围根据屏幕大小可以设置为不同值,并将输入法的弹出模式设置为adjustResize模式,adjustResize模式表示Activity的主窗口实时被调整大小,以保证软键盘的显示空间;

现有技术中,初始状态时,将表情面板和输入法高度固定,则有可能导致软键盘的布局不合理从而带入新的问题,本发明初始化时未设置表情面板和输入法高度一样,原因在于,虽然解决抖动问题的关键之一是让两者高度一致,但是,输入法的高度应该是由输入法处于adjustResize模式下弹出后决定,因为这样才能保证软键盘的显示空间。

(2)点击EditText,Android系统弹出软键盘,软键盘挤压Layout,检测并记录软键盘挤压Layout的挤压差值,此挤压差值即为软键盘的高度,将表情面板的高度值更新为该挤压差值,与此同时,隐藏表情面板;

(3)固定内容面板的高度,内容面板是指表情面板上面其它所有控件的高度;

在一个布局中一个控件的位置其实是由它上面所有控件的高度决定的,如果其上面其他控件的高度不变,那么当前控件的高度自然也不会变化,即使到时Activity的高度发生了变化也不会影响该控件的位置,因此我们只要固定内容面板上方面所有控件高度,即可固定内容面板位置(高度)。

仅仅将软键盘高度和表情面板高度设置为相同的值,并不能够解决跳闪抖动问题,因为所有的跳闪都是表情面板隐藏,而软键盘向上拖出瞬间,内容面板往下滑动,又被软键盘顶回原来位置造成的。因此,只有同时固定了内容面板的位置,闪跳问题才能彻底解决。

(4)当点击表情按钮时,需要先判断软键盘是否已展开:如果软键盘已经展开,将软键盘平滑隐藏并显示表情面板;如果输入法面板未展开,再判断表情面板是否展开,如果表情面板展开了,就隐藏并将输入法弹出模式归位为adjustResize模式,如果表情面板未展开,就直接显示表情面板并将输入法弹出模式设置为adjustNothing模式。

根据本发明优选的,所述步骤(3),采用自定义方法lockContentHeight固定内容面板的高度。

根据本发明优选的,所述步骤(4),如果输入法面板已经展开,将软键盘平滑隐藏并显示表情面板,包括步骤如下:

A、将Activity的输入法弹出模式设置为adjustNothing模式;

B、将步骤(2)中记录下来的挤压差值作为表情面板的高度,再将表情面板显示;此时由于键盘弹出模式为adjustNothing,所以键盘不会有任何抖动,并且由于表情面板与键盘等高,因此EditText也不会下移;

C、将软键盘隐藏。

本发明的有益效果为:

1、本发明所述动态切换Android系统输入法的弹出模式的方法,通过设定软键盘高度和表情面板高度一致,避免了由于二者高度不一致导致的切换时整个Activity抖动,使得在切换输入法和表情时更加平缓。

2、本发明所述动态切换Android系统输入法的弹出模式的方法,通过固定内容面板的高度,避免了表情面板隐藏,而软键盘向上拖出瞬间,内容面板往下滑动,又被软键盘顶回原来位置造成的内容面板局部闪动。

3、本发明使运行在Android系统下的应用软件,尤其是社交类应用软件在输入界面切换输入法和表情面板时,切换时更加平缓不会产生严重的跳闪抖动现象,提高了用户在使用过程中的用户体验,同时也可以增强应用软件的用户黏附性。

附图说明

图1为本发明动态切换Android系统输入法的弹出模式的方法的流程示意图;

图2为现有技术中软键盘和表情面板高度不一致时发生抖动的示意图;

图3为现有技术中未固定内容面板高度时出现的内容面板闪动的示意图;

图4为采用本发明后的效果示意图。

具体实施方式

下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。

实施例

一种动态切换Android系统输入法的弹出模式的方法,如图1所示,包括步骤如下:

(1)初始状态下,即软键盘和表情面板都未展开时,为表情面板设置一个默认高度,默认高度的取值范围是230dp-270dp,该默认高度可以保证表情面板正常显示,默认高度的取值范围根据屏幕大小可以设置为不同值,并将输入法的弹出模式设置为adjustResize模式,adjustResize模式表示Activity的主窗口实时被调整大小,以保证软键盘的显示空间;

现有技术中,初始状态时,将表情面板和输入法高度固定,则有可能导致软键盘的布局不合理从而带入新的问题,本发明初始化时未设置表情面板和输入法高度一样,原因在于,虽然解决抖动问题的关键之一是让两者高度一致,但是,输入法的高度应该是由输入法处于adjustResize模式下弹出后决定,因为这样才能保证软键盘的显示空间。

如图2所示,现有技术中,软键盘和表情面板高度不一致时,软键盘切换至表情面板时,即由图2中的(a)切换到(b)时使整个Activity会发生抖动。

(2)点击EditText,Android系统弹出软键盘,软键盘挤压Layout,检测并记录软键盘挤压Layout的挤压差值,此挤压差值即为软键盘的高度,将表情面板的高度值更新为该挤压差值,与此同时,隐藏表情面板;

(3)采用自定义方法lockContentHeight固定内容面板的高度,内容面板是指表情面板上面其它所有控件的高度;

在一个布局中一个控件的位置其实是由它上面所有控件的高度决定的,如果其上面其他控件的高度不变,那么当前控件的高度自然也不会变化,即使到时Activity的高度发生了变化也不会影响该控件的位置,因此我们只要固定内容面板上方面所有控件高度,即可固定内容面板位置(高度)。

仅仅将软键盘高度和表情面板高度设置为相同的值,并不能够解决跳闪抖动问题,因为所有的跳闪都是表情面板隐藏,而软键盘向上拖出瞬间,内容面板往下滑动,又被软键盘顶回原来位置造成的。因此,只有同时固定了内容面板的位置,闪跳问题才能彻底解决。

如图3所示,当内容面板的高度不固定时,由图3中的(a)切换到(b),由图3中的(b)切换到(c),内容面板发生闪动;

(4)当点击表情按钮时,需要先判断软键盘是否已展开:如果软键盘已经展开,将软键盘平滑隐藏并显示表情面板;包括步骤如下:

A、将Activity的输入法弹出模式设置为adjustNothing模式;

B、将步骤(2)中记录下来的挤压差值作为表情面板的高度,再将表情面板显示;此时由于键盘弹出模式为adjustNothing,所以键盘不会有任何抖动,并且由于表情面板与键盘等高,因此EditText也不会下移;

C、将软键盘隐藏。

如果输入法面板未展开,再判断表情面板是否展开,如果表情面板展开了,就隐藏并将输入法弹出模式归位为adjustResize模式,如果表情面板未展开,就直接显示表情面板并将输入法弹出模式设置为adjustNothing模式。

本发明所述动态切换Android系统输入法的弹出模式的方法,通过设定软键盘高度和表情面板高度一致,避免了由于二者高度不一致导致的切换时整个Activity抖动,使得在切换输入法和表情时更加平缓。通过固定内容面板的高度,避免了表情面板隐藏,而软键盘向上拖出瞬间,内容面板往下滑动,又被软键盘顶回原来位置造成的内容面板局部闪动。如图4所示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。