手势

作者: 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);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:手势

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