左右滑动实现activity之间的跳转

首先来看一下实现效果

这里写图片描述

1. BaseActivity extends Activity

首先,由于activity类之间存在很多共性 ,比如跳以及滑动等事件,所以需要抽象出一个父类来,简化代码量。

附代码:

/*** 按照123的步骤走* /
public abstract class BaseActivity extends Activity {private GestureDetector gestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//2、实例化手势管理的对象,用于管理屏幕监听事件onTouchEvent(event)传递过来的手势动作gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {//监听手势的移动 到底是从左往右还是从右往左//e1:手指按下的移动事件.float e1X = e1.getRawX();float e1Y = e1.getRawY();// e2 : 手指移动的动作事件.float e2X = e2.getRawX();float e2Y = e2.getRawY();// 跳转判断方式一:手指滑动的X轴方向的如果小于50,无效果,单位是pxif (Math.abs(e2X - e1X) < 50) {Toast.makeText(getApplicationContext(),"左右滑动小于50px", 0).show();return false;// 跳转判断方式二:比较e2,e1得到的Y值,获取两数绝对值判断是否上下滑动} else if (Math.abs(e2Y - e1Y) > 200) {Toast.makeText(getApplicationContext(), "手势上下滑动", 0).show();return false;// 比较e2,e1得到的Y值,获取两数绝对值判断是否左右滑动} else if (Math.abs(e2X - e1X) > 50) {// 判断是否左滑if ((e2X - e1X) > 0) {Toast.makeText(getApplicationContext(), "右滑", 0).show();// 判断是否右滑} else {Toast.makeText(getApplicationContext(), "左滑", 0).show();}return true;}//跳转判断方式三: 直接进行左右比值判断 稍微一有滑动就发生跳转if(e1.getX()-e2.getX()>0){//子类实现跳转的方法showNextPage();}if(e1.getX()-e2.getX()<0){//子类实现跳转的方法showPrePage();}return super.onFling(e1, e2, velocityX, velocityY);}});}//1、首先监听屏幕上响应的事件类型@Overridepublic boolean onTouchEvent(MotionEvent event) {//3、通过手势处理类,接收多种类型的事件,用作处理gestureDetector.onTouchEvent(event);return super.onTouchEvent(event);}//跳转到下一页的抽象方法protected abstract void showNextPage();//跳转到上一页的抽象方法protected abstract void showPrePage();//实现跳转下一页的方法public void nextPage(View view){showNextPage();}//实现跳转上一页的方法public void prePage(View view){showPrePage();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3 View - 状态保持 session

1.状态保持 http协议是无状态的&#xff1a;每次请求都是一次新的请求&#xff0c;不会记得之前通信的状态客户端与服务器端的一次通信&#xff0c;就是一次会话实现状态保持的方式&#xff1a;在客户端或服务器端存储与会话有关的数据存储方式包括cookie、session&#xff0c;…

拖拽升空的Android小火箭

先上演示效果 1、MainActivity 主布局就两个Button按钮 &#xff1a;一开启、二关闭 就不贴主布局xml了 因为小火箭是游离在activity之外的&#xff0c;所以不能依赖activity的生命周期 需要注意的一点是不要忘记在清单文件里配置 service 贴一下代码&#xff1a; public class…

yii验证系统学习记录,基于yiicms(一)写的太长了,再写一篇(二)

项目地址&#xff1a;https://gitee.com/templi/yiicms 感谢七觞酒大神的付出&#xff0c;和免费分享。当然也感谢yii2的开发团队们。 项目已经安全完毕&#xff0c;不知道后台密码&#xff0c;这种背景下&#xff0c;后台无法进去。绕不开的话题就是&#xff1a; 1.后台密码账…

前端学习(2697):重读vue电商网站18之监听图片删除事件

Js // 处理图片移除的操作 handleRemove(file) {// 1.获取将要删除的图片的临时路径const filePath file.response.data.tmp_path// 2.从pics数组中&#xff0c;找到这个图片对应的索引值const idx this.addForm.pics.findIndex(x > x.pic filePath)// 3.调用数组的 spli…

vscode开发java接口跳转到实现

我是mac系统&#xff0c;按照默认是commandF12&#xff0c;但是我的mac 13寸&#xff0c;按照这个快捷键&#xff0c;就显示亮度调节了。所以需要使用插件IntelliJ IDEA Keybindings来解决这个问题。 快捷方式如下&#xff1a;

前端学习(2698):重读vue电商网站19之处理图片预览操作

图片预览窗可以用 el-dialog 组件来做&#xff0c;然后通过 on-preview 函数来处理图片预览的操作。 Js <!-- 图片预览 --> <el-dialog title"图片预览" :visible.sync"previewVisable" width"50%"><img :src"previewPath&…

Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS

/*** 判断定位服务是否开启** param* return true 表示开启*/ public static boolean isLocationEnabled(Context context) {int locationMode 0;String locationProviders;if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {try {locationMode Settings.Secure.…

vscode-spring-boot YAML_UNKNOWN_PROPERTY 解决

使用vscode开发&#xff0c;安装了vscode-spring-boot ,报错如下 解决方案&#xff0c;增加对yml文件的识别 新增.vscode/settings.json 内容如下&#xff1a; {"files.associations": {"*.yml": "yaml"} }

Android之Junit测试类

今天跟着视频学习了Junit测试类&#xff0c;趁热打铁、顺便把学的东西整理下来&#xff0c;再就是为了以后好回顾 1、Junit单元测试介绍&#xff1a; 在实际开发中&#xff0c;经常要对已经实现的功能进行单元测试&#xff0c;以保证当前单元没问题&#xff0c;尽可能的减少已有…

前端学习(2699):重读vue电商网站20之使用Timeline 时间线

可视化地呈现时间流信息。 由于 vue-cli-plugin-element 最后更新时间是 2019年1月&#xff0c;而 element-ui 中 Timeline 时间线更新是在 3月份&#xff0c;因此我们没有办法直接进行引用。因此&#xff0c;我们直接通过手动导入的方式。 然后&#xff0c;我们打开 element.j…

Android 高德地图根据地址获取经纬度,计算两个坐标的距离

1、到高德开放平台申请&#xff0c;获取key 高德开放平台&#xff1a;https://lbs.amap.com/ 2、下载高德定位及地址搜索SDK:https://download.csdn.net/download/meixi_android/10845407 3、项目绑定高德SDK &#xff08;1&#xff09;配置key <meta-data android:name&q…

Android中WebService的应用

1.简介 Android中的WebService 是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台&#xff0c;不同语言、不同技术整合到一起。在Android SDK中并没有提供调用WebService的库&#xff0c;因此&#xff0c;需要使用第三方类库&#xff08;KSOAP2&#x…

宝塔 nginx 配置文件的存放目录配置vue的history模式

在项目中使用vue的history模式&#xff0c;需要配置文件&#xff0c;使用到宝塔面板的服务器。现在记录存放位置。 /www/server/panel/vhost/nginx配置history模式 try_files $uri $uri/ /index.html qkbim/index.html;配置跨域 add_header Access-Control-Allow-Origin *;ad…

查看Chome浏览器中已保存的密码

好累啊&#xff0c;今天上午模拟比赛&#xff0c;敲了一上午的代码&#xff0c;真是够够的&#xff1b;想想自己自学Java&#xff0c;然后自学Android&#xff0c;到现在一直没有放弃&#xff0c;其中要感激的人有很多很多&#xff0c;指导老师等等&#xff0c;最感谢的还是现在…

vscode开发java自定义代码模版

1、打开首选项配置 2、选择全局的 3、填写自己的代码块 {// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable…

前端学习(2702):重读vue电商网站23之element-ui 如何按需导入

在element.js 文件中&#xff0c;按照如下方式&#xff0c;进行按需导入即可。然后通过 Vue.use()方法进行引用。&#xff08;优化点&#xff1a;也就是将组建导入都放在一起&#xff0c;如果组件过多的话&#xff0c;支持换行&#xff09;

Socket实现Android客户端与服务器的通信

前言&#xff1a;题目要求故写一下总结。 1.什么是Socket? 网络用语叫套接字原理是基于tcp/ip 协议的一种通信手段&#xff0c;目前题目中要求无非就是当客户端数据异常时推送给服务器报警信息 往常接下来都是先看效果图的&#xff0c;由于今天回宿舍有点早&#xff0c;准备有…

完成聊天室的私聊功能

1 完成聊天室的私聊功能 完成聊天室私聊功能。私聊功能是指&#xff0c;客户端之间可以实现一对一的聊天。 服务器端程序启动后&#xff0c;将等待客户端连接&#xff0c;界面效果如图&#xff0d;1所示&#xff1a; 图&#xff0d;1 客户端程序运行时&#xff0c;需要用户先输…