Autojs代码示例 – ui界面监听输入法弹起和收起状态

本代码来源于autoxjs群友@つ゛ Shrek・流云 ଲ͏ ,经过测试,代码正常。

描述

通过监听全局布局的变化来实现输入法的弹起和收起的监测,并根据不同的状态进行相应的处理。

内容

具体代码如下:

let rootView = activity.getWindow().getDecorView().getRootView();
rootView.getViewTreeObserver().addOnGlobalLayoutListener(
	new android.view.ViewTreeObserver.OnGlobalLayoutListener({
		onGlobalLayout: function () {
			let r = new android.graphics.Rect();
			rootView.getWindowVisibleDisplayFrame(r);
			let screenHeight = rootView.getRootView().getHeight();
			let keypadHeight = screenHeight - r.bottom;

			// 输入法弹起
			if (keypadHeight > screenHeight * 0.15) {
				toast('输入法弹起');
				// 执行相应操作
			}

			// 输入法收起
			else {
				toast('输入法收起');
				// 执行相应操作
			}
		}
	})
);

 

原理

首先,通过activity.getWindow().getDecorView().getRootView()获取到当前Activity的根视图。

然后,通过rootView.getViewTreeObserver().addOnGlobalLayoutListener()方法添加一个全局布局监听器,在布局发生变化时触发回调函数onGlobalLayout()

onGlobalLayout()回调函数中,通过rootView.getWindowVisibleDisplayFrame(r)来获取当前可见区域的矩形信息,其中r.bottom表示输入法所覆盖的底部位置。

然后,通过比较屏幕高度和输入法覆盖底部位置之间的差值,即可判断输入法的状态。如果差值超过了屏幕高度的15%,则认为输入法弹起;否则,认为输入法收起。

最后,根据输入法的状态执行相应的操作,例如弹出提示信息或执行其他逻辑。

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 共4条

请登录后发表评论

      • 老猫的头像-五云学习老猫徽章-资深玩家-五云学习等级-LV2-五云学习作者0