AI开发实战9-Web浏览框(WebView)的定制2

Posted xjbclz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AI开发实战9-Web浏览框(WebView)的定制2相关的知识,希望对你有一定的参考价值。

7.2 返回键功能的处理

用App Inventor2开发的App,组件都是依附在Screen上,用户点击按键,也是Screen先接收按键事件,对于返回键的处理代码如下(在Form.java中):

@Override

 public boolean onKeyDown(int keyCode, KeyEvent event)

   if (keyCode == KeyEvent.KEYCODE_BACK)

      if (!BackPressed())

        boolean handled =super.onKeyDown(keyCode, event);

       AnimationUtil.ApplyCloseScreenAnimation(this, closeAnimType);

        return handled;

      else

        return true;

     

   

   return super.onKeyDown(keyCode, event);

 

 

@Override

 protected void onStop()

   super.onStop();

   Log.i(LOG_TAG, "Form " + formName + " got onStop");

   for (OnStopListener onStopListener : onStopListeners)

      onStopListener.onStop();

   

 

 

 @Override

 protected void onDestroy()

   super.onDestroy();

   // for debugging and future growth

   Log.i(LOG_TAG, "Form " + formName + " gotonDestroy");

 

   // Unregister events for components in this form.

   EventDispatcher.removeDispatchDelegate(this);

 

   for (OnDestroyListener onDestroyListener : onDestroyListeners)

      onDestroyListener.onDestroy();

   

 

当点击返回键的时候,会关闭当前App的Screen,退出应用,返回到系统桌面。

在用Web浏览框浏览网页的时候,这样处理的用户体验非常糟糕:用户在查看完第三级网页的时候,想再看下第二级网页,结果一点击返回键,直接就退出应用了。

可以在Form.java中,对Web浏览框的情况做特殊处理,代码如下:

@Override

 public boolean onKeyDown(int keyCode, KeyEvent event)

   if (keyCode == KeyEvent.KEYCODE_BACK)

 

      //判断是否可以返回上一级网页,如果可以则调用Web浏览框的goBack函数;如果不能再返回,则执行原有代码。

      if (WebViewer.isCanGoBack())

        WebViewer.goBack();

 

        return true;

     

 

      if (!BackPressed())

        boolean handled =super.onKeyDown(keyCode, event);

       AnimationUtil.ApplyCloseScreenAnimation(this, closeAnimType);

        return handled;

      else

        return true;

     

   

   return super.onKeyDown(keyCode, event);

 

在WebViewer.java中增加两个静态函数,供Form.java调用:

 public static boolean isCanGoBack()

      return webview.canGoBack();

 

 

 public static void goBack()

      webview.goBack();

 

以上是关于AI开发实战9-Web浏览框(WebView)的定制2的主要内容,如果未能解决你的问题,请参考以下文章

AI开发实战7-列表显示框(Listview)的定制

AI开发实战5-文本输入框(TextBox)的定制2

AI开发实战4-文本输入框(TextBox)的定制1

用hbuilder开发app怎么从webview中跳出新页面

移动端实战总结

iOS webview html5 移动端 软键盘弹起遮挡输入框