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

南昌网站建设模板文档深圳百度竞价推广

南昌网站建设模板文档,深圳百度竞价推广,做的好的h游戏下载网站,天元建设集团有限公司青岛第一建筑工程分公司原理是:利用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/511709.html

相关文章:

  • 做网站是什么专业国际新闻最新消息10条
  • 高端网站建设 南京网络销售工作靠谱吗
  • 重庆公司网站seo小广告
  • 网站代码如何做优化网络营销环境宏观微观分析
  • 那些免费网站做推广比较好个人接app推广单去哪里接
  • 常州做网上废品收购网站拉新注册app拿佣金
  • 长沙做网站设计长尾关键词
  • 民兵信息化网站建设常见的网络营销方法有哪些
  • 如何做监控网站成人英语培训班哪个机构好
  • 鹤壁网站推广公司seo工作前景如何
  • 上海营销型网站建设公司跨境电商关键词工具
  • 每日数码科技新鲜事南宁优化推广服务
  • 成都公司建设网站今天刚刚的最新新闻
  • 做教育业网站北京优化网站公司
  • 太原心诺做网站佛山网站建设
  • 做网站怎么上传图片企业自建网站
  • 衢州做网站电商关键词工具
  • 网页设计自学网站网络营销的案例有哪些
  • 如何打造网站啦啦啦资源视频在线观看8
  • 不知情的情况下帮别人做网站他违法百度云搜索资源入口
  • 前端搜索网站引擎怎么做疫情最新政策最新消息
  • 基于网站开发小程序学软件开发学费多少钱
  • 好看的网站建设杭州新站整站seo
  • 如何看一个网站是谁做的seo营销培训咨询
  • 南昌做网站的公司有哪些浙江网站推广
  • 盐山县做网站价格网站收录免费咨询
  • 做网站犯法网络营销的主要传播渠道是
  • wordpress规则什么是seo营销
  • 哪个网站可以做图片小网站关键词搜什么
  • 如何把做的网站放到百度上百度手机版