热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidPhoneWindowManager监听屏幕右侧向左滑动实现返回功能的实现

这篇文章主要讲解了AndroidPhoneWindowManager监听屏幕右侧向左滑动实现返回功能的实现,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大

这篇文章主要讲解了Android PhoneWindowManager监听屏幕右侧向左滑动实现返回功能的实现,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

由于项目没有设计返回键,一旦进入别的应用,就无法回到桌面。只能通过串口输入input keyevent 4(返回键)来返回桌面,为了方便调试,在Framework 中监听手势,实现返回功能。

       在frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager中有这么一段代码

mSystemGestures = new SystemGesturesPointerEventListener(context,
        new SystemGesturesPointerEventListener.Callbacks() {
          @Override
          public void onSwipeFromTop() {
   Log.i("gyx","onSwipeFromTop");
            if (mStatusBar != null) {
              requestTransientBars(mStatusBar);
            }
          }
          @Override
          public void onSwipeFromBottom() {
   Log.i("gyx","onSwipeFromBottom");
            if (mNavigationBar != null && mNavigatiOnBarPosition== NAV_BAR_BOTTOM) {
              requestTransientBars(mNavigationBar);
            }
          }
          @Override
          public void onSwipeFromRight() {
   Log.i("gyx","onSwipeFromRight");
   sendKeyCode(4);
   Log.i("gyx","sendKeyCode 4");
 
            if (mNavigationBar != null && mNavigatiOnBarPosition== NAV_BAR_RIGHT) {
              requestTransientBars(mNavigationBar);
            }
          }
          @Override
          public void onSwipeFromLeft() {
   Log.i("gyx","onSwipeFromLeft");
            if (mNavigationBar != null && mNavigatiOnBarPosition== NAV_BAR_LEFT) {
              requestTransientBars(mNavigationBar);
            }
          }
          @Override
          public void onFling(int duration) {
            if (mPowerManagerInternal != null) {
              mPowerManagerInternal.powerHint(
                  PowerHint.INTERACTION, duration);
            }
          }
          @Override
          public void onDebug() {
            // no-op
          }
          @Override
          public void onDown() {
            mOrientationListener.onTouchStart();
          }
          @Override
          public void onUpOrCancel() {
            mOrientationListener.onTouchEnd();
          }
          @Override
          public void onMouseHoverAtTop() {
            mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);
            Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS);
            msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS;
            mHandler.sendMessageDelayed(msg, 500);
          }
          @Override
          public void onMouseHoverAtBottom() {
            mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);
            Message msg = mHandler.obtainMessage(MSG_REQUEST_TRANSIENT_BARS);
            msg.arg1 = MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION;
            mHandler.sendMessageDelayed(msg, 500);
          }
          @Override
          public void onMouseLeaveFromEdge() {
            mHandler.removeMessages(MSG_REQUEST_TRANSIENT_BARS);
          }
        });

代码中监听了手势操作,其中onSwipeFromRight()就是当从屏幕的右侧向左滑动时会触发,只要在这里加入返回的功能即可;

实现返回按键的功能代码如下

private void sendKeyCode(final int keyCode) {
    new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          // 创建一个Instrumentation对象
          Instrumentation inst = new Instrumentation();
          // 调用inst对象的按键模拟方法
          inst.sendKeyDownUpSync(keyCode);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }).start();
  }

看完上述内容,是不是对Android PhoneWindowManager监听屏幕右侧向左滑动实现返回功能的实现有进一步的了解,如果还想学习更多内容,欢迎关注编程笔记行业资讯频道。


推荐阅读
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 本文详细探讨了JavaScript中的作用域链和闭包机制,解释了它们的工作原理及其在实际编程中的应用。通过具体的代码示例,帮助读者更好地理解和掌握这些概念。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 本文介绍如何通过 JavaScript 实现一个基于鼠标坐标的 Tooltip 弹出层,详细解释了如何获取窗口和文档的尺寸及滚动位置,并优化了代码结构。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 本问题探讨了在特定条件下排列儿童队伍的方法数量。题目要求计算满足条件的队伍排列总数,并使用递推算法和大数处理技术来解决这一问题。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 在本教程中,我们将深入探讨如何使用 Python 构建游戏的主程序模块。通过逐步实现各个关键组件,最终完成一个功能完善的游戏界面。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
author-avatar
peanapple007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有