当前位置: 首页 > wzjs >正文

订货网站建设上海做网络口碑优化的公司

订货网站建设,上海做网络口碑优化的公司,logo在线设计生成免费,沧州地区做网站原理是:利用getWindowVisibleDisplayFrame方法,获取Android窗口可见区域的Rect,这个Rect剔除了状态栏与导航栏,并且在有虚拟键盘遮挡的时候,会剔除这个遮挡区域。 接着,Unity的safeArea也剔除了状态栏与导…

原理是:利用getWindowVisibleDisplayFrame方法,获取Android窗口可见区域的Rect,这个Rect剔除了状态栏与导航栏,并且在有虚拟键盘遮挡的时候,会剔除这个遮挡区域。

接着,UnitysafeArea也剔除了状态栏与导航栏,且不会剔除虚拟键盘遮挡——那么,safeArea.height - getWindowVisibleDisplayFrame.height,就是虚拟键盘的高度。

public static float GetKeyboardHeight()
{#if UNITY_ANDROID && !UNITY_EDITORusing var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");using var activity         = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");using var window           = activity.Call<AndroidJavaObject>("getWindow");using var decorView        = window.Call<AndroidJavaObject>("getDecorView");     using var rect             = new AndroidJavaObject("android.graphics.Rect");decorView.Call("getWindowVisibleDisplayFrame", rect);return Screen.safeArea.height - rect.Call<int>("height");#elsereturn TouchScreenKeyboard.area.height;#endif
}

在实际中的问题是,虚拟键盘有动画,getWindowVisibleDisplayFrame获取有延迟,所以需要不断调用GetKeyboardHeight(),大概20帧左右,才能获取虚拟键盘高度的变化——于是AndroidJava对象,就会反复创建与释放。

一个解决方案是,使用协程,即只在高度变化时才返回(利用IEnumeratorCurrent,也可以用回调函数),如下:

/// <summary>
/// Waits until the keyboard height is different from the [oldHeight], and return the new height with [IEnumerator.Current].
/// By using Coroutine to reduce the call and dispose of Java objects. 
/// </summary>
public static IEnumerator GetKeyboardHeight(float oldHeight)
{#if UNITY_ANDROID && !UNITY_EDITORusing var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");using var activity         = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");using var window           = activity.Call<AndroidJavaObject>("getWindow");using var decorView        = window.Call<AndroidJavaObject>("getDecorView");     using var rect             = new AndroidJavaObject("android.graphics.Rect");while (true){decorView.Call("getWindowVisibleDisplayFrame", rect);var keyboardHeight = Screen.safeArea.height - rect.Call<int>("height");if (oldHeight != keyboardHeight){yield return keyboardHeight;yield break;}yield return null;}#elseyield return TouchScreenKeyboard.area.height;#endif
}

再给出一个,可以响应虚拟键盘不同状态的版本, 而safeArea.height也可以放到循环检测外面。

/// <summary>
/// Waits until the keyboard height is different from the [oldHeight], and return the new height with [IEnumerator.Current].
/// If [IEnumerator.Current] is 0.0f, the keyboard needs to be closed.
/// By using Coroutine to reduce the call and dispose of Java objects. 
/// </summary>
public static IEnumerator GetKeyboardHeight(float oldHeight, TouchScreenKeyboard keyboard)
{#if UNITY_ANDROID //&& !UNITY_EDITORusing var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");using var activity         = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");using var window           = activity.Call<AndroidJavaObject>("getWindow");using var decorView        = window.Call<AndroidJavaObject>("getDecorView");     using var rect             = new AndroidJavaObject("android.graphics.Rect");var safeAreaHeight   = Screen.safeArea.height;while (true){switch (keyboard.status){case TouchScreenKeyboard.Status.Visible:decorView.Call("getWindowVisibleDisplayFrame", rect);var keyboardHeight = safeAreaHeight - rect.Call<int>("height");if (oldHeight != keyboardHeight){yield return keyboardHeight;yield break;}                    break;case TouchScreenKeyboard.Status.Done:case TouchScreenKeyboard.Status.Canceled:case TouchScreenKeyboard.Status.LostFocus:yield return 0.0f;yield break;}yield return null;}#elseyield return TouchScreenKeyboard.area.height;#endif
}

http://www.dtcms.com/wzjs/548500.html

相关文章:

  • 静态网站特点做珠宝首饰网站
  • 做微信推送网站网站图片什么格式
  • 工程行业网站建一个网站的流程
  • 网站建设客户调查需求表网页大图素材
  • 网站底部版权怎么做网站地图定位怎么做
  • 网站优化 前端怎么做品牌建设经验做法
  • 织梦网站调整门户网站 流量
  • 禹城网站建设费用编程应用
  • 如何查看网站是不是wordpress渭南建筑工程网
  • 互网站开发维护成本高开发小程序商城的费用
  • 招商信息发布网站大全七牛部署WordPress
  • 昆明参差网站WordPress wlw设置
  • 公众号的微网站怎么做的wordpress 缩略图裁剪
  • 中石油技术开发公司网站o2o网站建设资讯
  • 排版设计模板网站校园二手物品交易网站怎么做
  • 淄博网站推广哪家好朋友圈推广平台
  • 怎么样做网站页面苏州外贸网站建设
  • 网站开发公司模版济南优化联系电话
  • asp网站静态化祖传做网站
  • 合肥站建设网站制作软件图标
  • 网站开发组岗位网站的软文推广
  • 站长推广网大连企业网站模板建站
  • 网站运营编辑网站建设与网页设计制作绿皮书
  • 专做专业课视频的网站图怪兽在线制作图片
  • 永久免费企业建站官网大全百度云做网站
  • 前端做的比较好的网站世界500强企业排行榜
  • 织梦网站app生成器网站建设-猴王网络
  • 手机网站怎么改成电脑版dede手机网站模版
  • 济南网站建设维护公司洛宁网站开发
  • 深圳外贸英文网站设计联系电话如何让网站被百度快速收录