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的主要内容,如果未能解决你的问题,请参考以下文章