热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android右滑返回上一个界面的实现方法

这篇文章主要介绍了Android右滑返回上一个界面的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下

Android右滑返回上一个界面的实现方法

public class BaseActivity extends Activity implements OnTouchListener { 
 
  public ProgressDialog progressDialog; 
  public String states; 
  public RequestQueue mQueue; 
 
  /** 触摸时按下的点 **/ 
  PointF downP = new PointF(); 
  /** 触摸时当前的点 **/ 
  PointF curP = new PointF(); 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
 
 
  } 
 
  @Override 
  protected void onResume() { 
    super.onResume(); 
  } 
 
   
  @Override 
  public boolean onTouchEvent(MotionEvent event) { 
 
 
     
    curP.x = event.getX(); 
    switch (event.getAction()) { 
     
     
    case MotionEvent.ACTION_DOWN: 
 
      downP.x = event.getX(); 
     
      break; 
    case MotionEvent.ACTION_MOVE: 
 
 
      if (curP.x- downP.x > 500) { 
        Log.i("TEST", "move-=-=-=--=-"); 
        finish(); 
       
      } 
 
      break; 
    case MotionEvent.ACTION_UP: 
 
      break; 
 
    default: 
      break; 
    } 
     
    return true; 
  } 
 
  @Override 
  protected void onPause() { 
    super.onPause(); 
  } 
 
  @Override 
  protected void onDestroy() { 
    super.onDestroy(); 
 
  } 
 
   
 
} 

如上所示,既然要滑动返回上一个界面,我给出的方法是重写onTouchEvent事件,所以我们实现了OnTouchListener 这个接口,

接下来的事情就是,我们要做些什么事呢,没错,就是滑动判断,至于事件 switch 里面的 各个情况对应的是我们对屏幕做了什么样的操作就不解释了,(可以自行百度)如上所示,如果滑动距离超过500像素,就结束当前activity,其实写到这里基本上就没了,但是我怎么可能写这么低端的博客,你们说是不是,好的,重点来了,

博主帅哥,我现在就是用的你这个方法,但是为毛 scrollview 下的布局,对这个接口无效呢,好的,问的漂亮,我的回答是:我tm哪知道,....

OK,我们看下scrollview 源码:

他喵的,果然重写了这个方法, 根据 view 触碰事件的传递顺序,scrollview会先拦截到事件,所以,我们要做的就是,在不对scrollview本来的拦截事件做改变的情况下,加入我们所需要的需求来满足我们实现功能, 那么就很简答了, 当然是 自己 定义一个view,代码如下:

public class BackScrollView extends ScrollView { 
 
  /** 触摸时按下的点 **/ 
  PointF downP = new PointF(); 
  /** 触摸时当前的点 **/ 
  PointF curP = new PointF(); 
 
  public BackScrollView(Context context) { 
    super(context); 
  } 
 
  public BackScrollView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
  } 
 
  public BackScrollView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
  } 
 
  @Override 
  public boolean onTouchEvent(MotionEvent event) { 
 
    curP.x = event.getX(); 
    switch (event.getAction()) { 
 
    case MotionEvent.ACTION_DOWN: 
 
      downP.x = event.getX(); 
      Log.i("TEST", "downP.x-=-=-=--=-" + downP.x); 
      break; 
    case MotionEvent.ACTION_MOVE: 
      Log.i("TEST", "downP.x-=-=-=--=-" + curP.x); 
 
      if (downP.x <200) { 
 
        if (curP.x - downP.x > 500) { 
 
          return false; 
 
        } 
      } 
 
      break; 
    case MotionEvent.ACTION_UP: 
 
      break; 
 
    default: 
      break; 
    } 
    return super.onTouchEvent(event); 
  } 

OK,在如上代码中,可以看到我们做了一个判断,当触摸点像素距离屏幕最左边200像素以内时,滑动才有效果,否则执行父类方法,没了? 我仅举这一例子说明可能存在的一些问题,当然,如果布局中也有其它控件出现类似的情况,那么跟 这个一样,自己定义一个view,重写它的 触摸事件,(其实自定义view很简单的,哥刚开始也觉得很难,后来 也就那样....) ,当然,直接finish可能会显得太单一,你们可以充分发挥你们的想象,可以添加一些动画进去,使得界面更加炫,

OK,今天就扯到这里,吃饭 time...

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 在Windows系统上安装VMware Workstation 2022的详细步骤
    本文将详细介绍如何在Windows系统上安装VMware Workstation 2022。包括从官方网站下载软件、选择合适的版本以及安装过程中的关键步骤。此外,还将提供一些激活密钥供参考。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细探讨了HTTP 500内部服务器错误的成因、解决方案及其在Web开发中的影响。通过对具体案例的分析,帮助读者理解并解决此类问题。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 自媒体创作必备工具与软件推荐
    本文将详细介绍自媒体创作者所需的各类工具和软件,包括视频制作、剪辑、发布平台管理等方面的专业建议。 ... [详细]
  • 探讨如何使用工具或方法来自定义百度网盘的提取码,以提高文件分享的安全性和便捷性。 ... [详细]
  • 摘要:为了解决下载速度慢的问题,本文介绍了一种高效的下载方法,并提供了详细的步骤和工具推荐。通过使用百度网盘分享功能,可以显著提高文件传输效率。 ... [详细]
author-avatar
Bboy龙超
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有