86.android页面滑动,利用手势识别器
来源:互联网 发布:照片管理 nas windows 编辑:程序博客网 时间:2024/06/06 00:29
手势滑动和点击事件有一些不一样,可以先创建GestureDetector mDector手势识别器,再通过对onTouchEvent的监听,进行处理手势的动作,根据相对于屏幕坐标的移动判断移动到上一页还是下一页。Setup2Activity.java
package com.ldw.safe.Activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.GestureDetector;import android.view.GestureDetector.SimpleOnGestureListener;import android.view.MotionEvent;import android.view.View;import com.ldw.safe.R;/* * 手机防盗第二个设置向导页面 */public class Setup2Activity extends Activity {private GestureDetector mDector;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup2); //创建手势识别器 mDector = new GestureDetector(this, new SimpleOnGestureListener(){ //监听手势滑动动作,e1是滑动的起始点,e2是滑动的终点。后2个参数是X,Y速度 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){ //获取到相对于屏幕的相对坐标,设置最小的滑动距离 //向右滑动,上一页 if((e2.getRawX() - e1.getRawX()) > 200){ showPrevious(); return true; } //向左滑动,下一页 if((e1.getRawX() - e2.getRawX()) > 200){ showNext(); return true; } return super.onFling(e1, e2, velocityX, velocityY); } });}//显示上一页public void showPrevious(){//页面跳转startActivity(new Intent(Setup2Activity.this, Setup1Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画}//显示下一页public void showNext(){//页面跳转startActivity(new Intent(Setup2Activity.this, Setup3Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画}//点击按钮跳转到下一页public void next(View v){/*//页面跳转startActivity(new Intent(Setup2Activity.this, Setup3Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画*/}//点击按钮跳转到上一页public void previous(View v){showPrevious();/*//页面跳转startActivity(new Intent(Setup2Activity.this, Setup1Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画*/}//处理手势滑动页面的处理,委托给GestureDetector手势识别器处理@Overridepublic boolean onTouchEvent(MotionEvent event){//手势识别器进行处理mDector.onTouchEvent(event);return super.onTouchEvent(event);}}
收拾移动可以用到很多页面,针对这个,在每一个页面上添加这个太麻烦,因此,当在移动端设计的时候需要创建一个基类,从基类中继承基类的方法,主要的方法在基类中实现,不同的方法在基类中创建一个抽象方法,然后让所有的子类去实现。基类实现了按钮点击的上一页和下一页的方法,以及初始化了抽象方法给子类去实现
基类BaseSetupActivity.java
package com.ldw.safe.Activity;import com.ldw.safe.R;import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.GestureDetector.SimpleOnGestureListener;/* * 设置引导页面的父类,这个基类不需要在Manifist文件中注册,因为其不需要展示 * 里面有抽象方法,类设置成抽象类 */public abstract class BaseSetupActivity extends Activity {public SharedPreferences mPref;private GestureDetector mDector;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup2); mPref = getSharedPreferences("config", MODE_PRIVATE); //创建手势识别器 mDector = new GestureDetector(this, new SimpleOnGestureListener(){ //监听手势滑动动作,e1是滑动的起始点,e2是滑动的终点。后2个参数是X,Y速度 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){ //防止上滑动和下滑动幅度过大,不让切换 if(Math.abs(e2.getRawY() - e1.getRawY()) > 200){ return true; } //滑动的速度不能太慢 if(Math.abs(velocityX) < 100){ return true; } //获取到相对于屏幕的相对坐标,设置最小的滑动距离 //向右滑动,上一页 if((e2.getRawX() - e1.getRawX()) > 200){ showPrevious(); return true; } //向左滑动,下一页 if((e1.getRawX() - e2.getRawX()) > 200){ showNext(); return true; } return super.onFling(e1, e2, velocityX, velocityY); } });}//显示上一页,这个需要子类去实现,跳转的页面不是固定的,抽象方法,强制子类去实现public abstract void showPrevious();//显示下一页,这个需要子类去实现,跳转的页面不是固定的public abstract void showNext();//点击按钮跳转到下一页public void next(View v){/*//页面跳转startActivity(new Intent(Setup2Activity.this, Setup3Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画*/}//点击按钮跳转到上一页public void previous(View v){showPrevious();/*//页面跳转startActivity(new Intent(Setup2Activity.this, Setup1Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画*/}//处理手势滑动页面的处理,委托给GestureDetector手势识别器处理@Overridepublic boolean onTouchEvent(MotionEvent event){//手势识别器进行处理mDector.onTouchEvent(event);return super.onTouchEvent(event);}}
activity使用基类的方法Setup3Activity.java,子类实现抽象方法,同时不需要实现按钮点击的方法
package com.ldw.safe.Activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import com.ldw.safe.R;/* * 手机防盗第三个设置向导页面 */public class Setup3Activity extends BaseSetupActivity {@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup3);}//显示上一页,这个需要子类去实现,跳转的页面不是固定的public void showPrevious(){//页面跳转startActivity(new Intent(Setup3Activity.this, Setup2Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画}//显示下一页,这个需要子类去实现,跳转的页面不是固定的public void showNext(){//页面跳转startActivity(new Intent(Setup3Activity.this, Setup4Activity.class));//销毁当前页面finish();//两个界面的切换动画overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画}}
0 0
- 86.android页面滑动,利用手势识别器
- android手势滑动识别
- Android 手势滑动识别
- Android 手势滑动识别
- android手势滑动识别
- Android手势滑动识别器应用
- *Android手势识别(左右滑动)实现页面切换
- Android 手势识别 (左右滑动)实现 页面 切换
- Android 手势识别 (左右滑动)实现 页面 切换
- Android 页面手势滑动
- Safe-滑动页面(Setup2Activity)-手势识别器
- Android学习笔记(手势识别器,左右滑动)
- Android简单手势滑动的识别
- android手势识别器
- Android手势识别器
- GestureDetector 手势滑动识别
- GestureDetector识别手势滑动
- 手势滑动识别
- 85.android MotionEvent中的getx和getRawX
- Batch Normalization 学习笔记
- leetcode154. Find Minimum in Rotated Sorted Array II
- 从理论到实践,全方位认识DNS(实践篇)
- 计算机图形学(一)渲染管线
- 86.android页面滑动,利用手势识别器
- Android实习札记(2)---妙用View的keepScreenOn保持屏幕常亮,android屏幕常亮
- 扫描器对象Scanner
- 高性能MySQL笔记之基本概念
- 87.android SIM开机监听
- Ubuntun下tree命令的安装
- 88.android读取联系人
- 89.android获取联系人,并回传联系人数据(设置安全号码)
- 《深入浅出Node.js》读书笔记+个人思考(一):模块机制