左右滑动实现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,一经查实,立即删除!

相关文章

vue3 watch props 监听属性变化

我的需求是弹出一个模态框。使用visible控制隐藏与现实&#xff0c;需要watch&#xff0c;visible变化&#xff0c;执行其他相关操作。 核心代码如下&#xff1a; import { watch, toRefs } from "vue"; const props defineProps({visible: {type: Boolean,default…

Android 调用原生API获取地理位置和经纬度,判断所在国家

public static boolean isCN(Context context) {TelephonyManager tm (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);String countryIso tm.getSimCountryIso();boolean isCN false;//判断是不是大陆if (!TextUtils.isEmpty(countryIso)) {count…

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…

vue3 vite ts 报错ReferenceError: React is not defined

解决方案&#xff1a; 1、安装vitejs/plugin-vue-jsx pnpm install vitejs/plugin-vue-jsx2、配置vite.config.ts import vueJsx from vitejs/plugin-vue-jsxexport default defineConfig({plugins: [vue(),vueJsx() ] })

Android view转bitmap,byte[]转Bitmap

1、自定义marker布局文件即自定义view文件 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height&…

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;

android学习路线:如何成长为高级工程师

转载地址&#xff1a;http://blog.csdn.net/singwhatiwanna/article/details/42343847 转载原因&#xff1a;博主说的挺好&#xff0c;前辈经验。高级也算是自己的一个长远目标吧&#xff0c;学习ing ##一 明确自我定位 现在你是初级工程师&#xff0c;但是你想当个高级工程师&…

前端学习(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"} }

adb命令检测apk启动时间、内存、CPU使用情况、流量、电池电量等——常用的adb命令...

ADB&#xff1a;Android Debug Bridge&#xff0c;是Android SDK里一个可以直接操作安卓模拟器或真实设备的工具&#xff0c;颇为强大。检测APP&#xff1a;adb shell am start -W packageName/.MainActivity //启动时间adb shell dumpsys meminfo $PID …

vue3父组件调用子组件方法

父组件 <component ref"xponent" /><script lang"ts" setup> import { ref } from "vue"; const xponent ref();const download async () > {console.log(xponent)xponent.value.download() } </script>子组件核心方法&…

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…

Graphics.DrawRectangle Method(矩形)

Overload List Name Description DrawRectangle(Pen, Int32, Int32, Int32, Int32) Draws a rectangle specified by a coordinate pair, a width, and a height. DrawRectangle(Pen, Rectangle) Draws a rectangle specified by a Rectangle structure. DrawRec…