AI开发实战9-Web浏览框(WebView)的定制2
来源:互联网 发布:java 定义空的数组 编辑:程序博客网 时间:2024/06/05 14:21
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开发实战8-Web浏览框(WebView)的定制1
- AI开发实战2-定制自己的AI伴侣
- AI开发实战7-列表显示框(Listview)的定制
- AI开发实战5-文本输入框(TextBox)的定制2
- AI开发实战3-定制自己的Screen
- AI开发实战6-图像组件(Image)的定制
- AI开发实战10-文件管理器(File)的定制
- AI开发实战4-文本输入框(TextBox)的定制1
- AI开发实战11-加密功能插件的开发
- AI开发实战1-App Inventor的编译
- APP开发实战149-Android Studio模板的定制使用
- 精通Struts 2: Web 2.0开发实战的评论
- 开启 Android WebView 的安全浏览模式
- 《通过Web远程浏览并控制Tiny6410上的usb摄像头》---实战篇
- 我的Web开发实战总结(一)
- 我的Web开发实战总结(二)
- web service 开发实战
- pharse 精灵图的截取
- linux文件系统
- sas统计分析学习笔记(六)
- python基础----变量,数据类型
- 系统架构设计方法论——TOGAF
- AI开发实战9-Web浏览框(WebView)的定制2
- EXCEL常用函数
- [Leetcode] 44. Wildcard Matching
- parse_url 一个好用的函数
- 《Java7编程高级进阶》(二)
- java编程:输入int数组的方法二(知道长度)
- NYOJ289. 苹果(0-1背包)
- JQuery中的动画、DOM、导航
- GIS概念之大地坐标系的建立