前言:我们项目要求的返回逻辑是,在Xwalkview里面所有的页面点击物理返回键,都会执行双击退出的功能,所以,如果你们项目要求的不是这样的,那么这篇博文对你没什么大的用处,不过可以相互学习下哈!

Crosswalk的好处,我就不在这里赘述了,比原生的WebView的性能不知道提升了多少倍,原生中的不兼容的布局问题,在Crosswalk里面根本不存在(因为我们项目中用到了语音连读的功能,这个功能 在三星某款手机中,还是有问题的),等等很多好处,当然也不是完美的,比如,如果出问题的话,可以参考的资料还是有限的,大家就自己取舍一下吧;

------------------------进入正题------------------------------

1,集成Crosswalk的步骤,我也不说了,网上一大堆,基本上都可以集成成功的,也不是很复杂;

2,集成之后,你就会发现性能真的提升了不止一点点,但是 如果你点击物理返回键,你会发现,他是会不用你写逻辑,而自己去执行网页的跳转的,这一点我觉得Crosswalk做的还是很好的,但是就如我刚才说的,我们的项目要求是无论在Xwalkview里面的哪一个页面,双击物理返回键都得退出的,那么这时候就出现问题了,一般我们会直接去onKeyDown里写一些逻辑,比如:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {//双击退出的逻辑代码return true;}return super.onKeyDown(keyCode, event);
}

上面这一段代码就是无论在哪一个页面,双击back直接退出的,但是测试的时候 你会发现,现实并不是想象的那样,Xwalkview还是会在你按下返回键的时候执行跳转到上一个页面的方法,这也不是我们要的,所以这个方法不行;

3,第二个方法就有点麻烦,重写Xwalkview的dispatchKeyEvent方法,判断如果是返回的话,直接屏蔽掉,这个方法还是比较靠谱的,接下来就是代码了:

a,需要一个继承自Xwalkview的类,名字叫MyXwalkview

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;import org.xwalk.core.XWalkView;public class MyXwalkview extends XWalkView{public MyXwalkview(Context context) {super(context);}public MyXwalkview(Context context, AttributeSet attrs) {super(context, attrs);}public MyXwalkview(Context context, Activity activity) {super(context, activity);}@Overridepublic boolean dispatchKeyEvent(KeyEvent event) {if (event.getKeyCode() == KeyEvent.KEYCODE_BACK){return false;}return super.dispatchKeyEvent(event);}}

b,然后在你使用的地方,将原来的Xwalkview换成MyXwalkview的绝对路径,在你使用的地方将类也改掉。

c,然后在你的MainActivity中的onKeyDown方法里这么写:

    @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK){exitByDoubleClick();return true;}return super.onKeyDown(keyCode, event);}

这就OK了!

android集成Crosswalk内核,屏蔽返回键问题。相关推荐

  1. 【Android】Android中屏蔽返回键,home键以及其他实体按键

    屏蔽键重写activiy的两个方法就行 屏蔽返回键 public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { ...

  2. Android 屏蔽返回键、菜单键和Home键

    //重写 public  void onAttachedToWindow ( )  {          this . getWindow ( ) . setType ( WindowManager. ...

  3. android 屏蔽实体按键,Android中屏蔽返回键,home键以及其他实体按键

    屏蔽键重写activiy的两个方法就行 屏蔽返回键 public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { ...

  4. 直播源码开发,Android 屏蔽返回键(后退键)

    直播源码开发,Android 屏蔽返回键(后退键) 方案一 在Activity中重写onBackPressed方法(推荐使用). @Override public void onBackPressed ...

  5. Android 拦截或屏蔽返回键

    在Android开发中我们常常会遇到需要拦截或屏蔽返回键的需求,对拦截后的返回键进行特殊操作. 监听返回键有两种方式 1.重写OnBackPressed方法 @Overridepublic void ...

  6. android屏蔽返回键和Home键

    //屏蔽返回键的代码: public boolean onKeyDown(int keyCode,KeyEvent event) {switch(keyCode){case KeyEvent.KEYC ...

  7. android中的后退功能,如何在Android应用中实现一个返回键功能

    如何在Android应用中实现一个返回键功能 发布时间:2020-11-23 16:28:56 来源:亿速云 阅读:89 作者:Leah 今天就跟大家聊聊有关如何在Android应用中实现一个返回键功 ...

  8. Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键

    我们可以在很多应用中都能看到按两次返回键退出 , 其实这个功能实现很容易, 下面就是实现的代码 , 把它放到你的程序中你的程序就能按两次返回键退出啦  , 这个功能是为了避免误点而把程序退出了 ,给你 ...

  9. android dialog返回键不消失,安卓dialog,屏蔽返回键,亲测可用

    最近做一个商品选择套餐的功能,需要一个dialog进行翻页,然后按了返回键,dialog全部关闭了,这就很难受了,于是网上搜了一下,也试了很多,都不是想要的效果,突然想到按两下返回键退出app,刚好和 ...

最新文章

  1. 【腾讯bugly干货分享】微信Android热补丁实践演进之路
  2. php 面对对象总结,PHP 面向对象总结
  3. 【struts2+hibernate+spring项目实战】java读写实现代码生成器(ssh)
  4. javaweb 图书管理系统完整代码_看一名Java开发人员以红队思维五分钟审计一套代码(续)...
  5. mysql 端口 telnet 不通_3306端口不通,不一定是网络的问题
  6. 广东 职称英语计算机,现在评职称英语和计算机都不用考了
  7. 【转载】Apache如何设置访问一个目录需要密码
  8. 火山PC后台操作第三方窗口案例
  9. kmz文件转为arcgis的图层(制作底图)
  10. python通讯录管理系统设计_通讯录程序设计报告
  11. 离散数学关于等价关系的证明
  12. CSS边框border属性
  13. WP-CONTENT/UPLOADS的777,775,744,644,444文件权限设置
  14. 关于CClientDC与CPAINTDC,以及GetDC与GetWindowDC的用法。
  15. 灰狼优化算法(GWO)附代码
  16. 同时使用两片I2C同型号设备时地址怎样设置 (如何更改器件地址)
  17. 全球与中国触摸屏IC市场现状及未来发展趋势
  18. 有哪些适合新手的练手Java项目?
  19. 12小时制转24小时制
  20. python 仪表盘监控_Python 全栈开发 -- 监控篇

热门文章

  1. GitBook 使用教程
  2. 使用opencv截取旋转框目标
  3. rstudio找不到r低版本_R学习笔记-安装R和RStudio,注意RStudio的版本需要与操作系统版本匹配...
  4. intel linux核显性能,Linux下调节屏幕亮度(Intel核显)
  5. 浅入浅出Caffeine cache
  6. 台湾繁体字和大陆汉语转换
  7. 【深度学习小常识】CPU(中央处理器)和GPU(图像处理器)的区别
  8. KEIL 提示L6406E L6407E的解决方法
  9. 使用2019.2 Terrain Tools更新来加速Terrain Material绘画
  10. 一本通1646GT 考试