• android使用GestureDetector实现手势下滑关闭页面的效果。


              实现类似Android风云直播手机端注册登录页,当手势向下滑动的时候,关闭页面的效果。

                    使用GestureDetector来实现这个效果,当手势在屏幕上面滑动的时候 ,会掉用onFling方法,所以,在这个方法里面做判断和操作即可。

              好了 ,作为一个老程序员了,原理就不讲了,直接上代码,相信你会看懂的,有问题,直接留言或者联系我,我会第一时间回复的。

              (今天感谢一个网友@奋斗 的反馈,由于我的失误,忘记把启动手势识别器的代码贴出来了,所以重新编辑了一下,感谢大家的支持!)

              效果如下:

               image

     一、实现手势下滑关闭功能。

              1.在onCreate方法里面重写 GestureDetector的方法

    private GestureDetector mGestureDetector;
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_login);
         
            mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
                @Override
                public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                    // if (Math.abs(e1.getRawX() - e2.getRawX()) > 250) {
                    // // System.out.println("水平方向移动距离过大");
                    // return true;
                    // }
                    if (Math.abs(velocityY) < 100) {
                        // System.out.println("手指移动的太慢了");
                        return true;
                    }
    
                    // 手势向下 down
                    if ((e2.getRawY() - e1.getRawY()) > 200) {
                        finish();//在此处控制关闭
                        return true;
                    }
                    // 手势向上 up
                    if ((e1.getRawY() - e2.getRawY()) > 200) {
                        return true;
                    }
                    return super.onFling(e1, e2, velocityX, velocityY);
                }
            });
    
        }

       调用这句的代码启动手势识别器:

      

         //2.让手势识别器 工作起来
        //当activity被触摸的时候调用的方法.
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            mGestureDetector.onTouchEvent(event);
            return super.onTouchEvent(event);
        }
        
    

       2.同样,如果你想要控制左滑和右滑,直接使用getRawX()方法即可,可以尝试。

    二、实现下拉和上抽动画效果。

         动画效果实现,重写上抽和下拉的动画效果,可以使用Android自带的一个方法,在finish()方法之前进行调用:

          overridePendingTransition(R.anim.slide_up_in, R.anim.slide_up_out);

           

    R.anim.slide_up_out

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <translate
            android:duration="200"
            android:fromYDelta="0%"
            android:interpolator="@android:anim/accelerate_interpolator"
            android:toYDelta="100%" />
    
    </set>
    R.anim.slide_up_in:
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <translate
            android:duration="300"
            android:fromYDelta="-100%"
            android:interpolator="@android:anim/accelerate_interpolator"
            android:toYDelta="0%" />
    
    </set>

          

               快去试试吧!

  • 相关阅读:
    安卓面试人人面向源码开发(一)
    Kotlin常见用法
    安卓触摸事件调度顺序
    自定义view 可自动换行滑动的LinearLayout
    屏幕适配那些事一篇带你搞定,出发与结论点独特适合新手。欢迎收藏
    初识位域
    简单区分Vmware的三种网络连接模式(bridged、NAT、host-only)
    刚开始学Python,坚持下去
    FAT AP 与 FIT AP的特点和区别
    BSSID,SSID,ESSID区别
  • 原文地址:https://www.cnblogs.com/yejiurui/p/3803658.html
Copyright © 2020-2023  润新知