手势

作者: dev晴天 | 来源:发表于2018-08-12 11:16 被阅读0次
1 手势原理分析 (原理图略)


由手机的坐标系可知(左上角(0,0)向右为正,向下为正):

a 当你的手指从右向左滑动时 起始点的x坐标 > 终点的x坐标 当前页面跳转到下一页  (下一页 加载来) 

b 当你的手指从左向右滑动时 起始点的x坐标 < 终点的x坐标 当前页面跳转到上一页

加入 起始点x坐标 为e1 ,终点的为e2  可得

e1 - e2 > 0  从右向左滑动         当前页面跳转到下一页


e1 - e2 < 0  从左向右滑动         当前页面跳转到上一页

代码Demo:



package com.example.administrator.mobilesafe;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;


/**
 * Created by Administrator on 2017/9/12.
 */

// 第一个导航页面
public class Setup1Activity extends Activity{
    private GestureDetector gestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setup1);

        //  2 创建手势管理对象 用作管理在onTouchEvent(event)传递过来的数据
          gestureDetector =    new GestureDetector(this,new  GestureDetector.SimpleOnGestureListener(){
        // 此处不可直接 new  SimpleOnGestureListener()应为 此类为内部类 直接用实现方法太多
         // 可以通过  (GestureDetector.SimpleOnGestureListener())  GestureDetector 类调用在new

            //  此处重写 public boolean onFling方法  功能监听手势的移动
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                // 参数 起始点 终点  在x y 轴的速度  通过e1 e2 的getX或Y() 获得 x 或y坐标
                if(e1.getX()-e2.getX()>0){
                    //   跳转到下一页 (代码复用粘贴即可)
                    startActivity(new Intent(getApplicationContext(),Setup2Activity.class));
                    finish();
                    // 开启平移动画  参数两个 enterAnim  exitanim
                    overridePendingTransition(R.anim.next_in_anim,R.anim.next_out_anim);
                }
                if(e1.getX()-e2.getX()<0){
                    //   跳转到上一页
                }

                return super.onFling(e1, e2, velocityX, velocityY);
            }
        });
    }

    // 按钮的点击事件  点击按钮跳转Setup2Activity页面
    public void nextPage(View view){
        startActivity(new Intent(getApplicationContext(),Setup2Activity.class));
        finish();
        // 开启平移动画  参数两个 enterAnim  exitanim
         overridePendingTransition(R.anim.next_in_anim,R.anim.next_out_anim);
    }





    /* 1
      监听屏幕上响应事件的类型 (按下(1次) 移动(多) 抬起(1))重写activity的
      onTouchEvent方法

          */
    @Override
    public boolean onTouchEvent(MotionEvent event) {

        // 3 通过手势处理类 接受多种类型的事件用作处理

        gestureDetector.onTouchEvent(event);//  对象调用触摸方法吧事件传过去
        return super.onTouchEvent(event);
    }
}

相关文章

  • 手势

    点击手势 捏合手势 旋转手势 轻扫手势 拖拽手势 边缘平移手势 长按手势

  • iOS-手势详细参数说明

    敲击手势 长按手势 滑动手势 拖动手势 旋转手势 捏合手势 两种手势作用在同一个视图

  • 【iOS学习】——手势识别

    iOS 手势 手势需要开启用户交互 点击手势 单击手势 双击手势 添加 numberOfTapsRequired...

  • Swift - UIGestureRecognizer 各种手势

    1、点击手势2、拖动手势3、长按手势4、滑动手势5、捏合手势6、旋转手势 完整代码

  • iOS七种手势详解

    1、轻拍手势 2、捏合手势 3、旋转手势 4、平移手势 5、边缘轻扫手势 6、长按手势 7、轻扫手势 给image...

  • iOS手势总结

    1.轻拍手势 2.长按手势 3.轻扫手势 4.平移手势 5.捏合手势 6.旋转手势 7.边缘手势

  • iOS 手势

    修改时间: 2016-12-19修改次数: 0 手势传递 点击手势 捏合手势 轻扫手势 拖动手势 长按手势

  • iOS手势操作

    iOS手势有六种 手势类型: 手势状态: 创建View添加手势 1.轻点手势( UITapGestureRecog...

  • Vue手势

    点击手势 滑动手势 手势的方法

  • UI梳理——手势

    手势分类: 手势的创建: 方法的实现: 轻扫手势:UISwipeGestureRecognizer 长按手势: 以...

网友评论

      本文标题:手势

      本文链接:https://www.haomeiwen.com/subject/wmhsbftx.html