Unity3d游戏聊天匹配手机虚拟键盘

项目最近开发聊天系统,有这么一个需求:输入框根据键盘的高度来做适应,意思就是说,根据键盘的高度,动态改变游戏聊天视图的高度。
然后记录一下过程吧。

开发环境:Unity2019.4 , Fairygui 2022.1

思路:
1,获取虚拟键盘高度
2,根据虚拟键盘高度计算需要显示的UI高度

首先,核心内容,计算虚拟键盘高度,这部分比较容易找到。

  /// <summary>
    /// 获取软键盘高度
    /// </summary>
    /// <param name="includeInput">是否包含输入框 </param>
    /// <param name="screenHeight">屏幕高度</param>
    /// <returns></returns>
    public static int GetKeyboardHeight(bool includeInput, int screenHeight)
    {
   
#if UNITY_EDITOR || UNITY_STANDALONE_WIN
        return 0;
#elif UNITY_STANDALONE_OSX || UNITY_IPHONE
        return  (int)UnityEngine.TouchScreenKeyboard.area.height;
#elif UNITY_ANDROID
         using (var unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
        {
   
            var unityPlayer = unityClass.GetStatic<AndroidJavaObject>("currentActivity")
                .Get<AndroidJavaObject>("mUnityPlayer");
            var view = unityPlayer.Call<AndroidJavaObject>("getView");
            var dialog = unityPlayer.Get<AndroidJavaObject>("mSoftInputDialog");

            if (view == null || dialog == null)
                return 0;

            var decorHeight = 0;

            if (includeInput)
            {
   
                var decorView = dialog.Call<AndroidJavaObject>("getWindow").Call<AndroidJavaObject>("getDecorView");

                if (decorView != null)
                    decorHeight = decorView.Call<int>("getHeight");
            }

            using (var rect = new 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值