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

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

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

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

效果如下:

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

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

  1. private GestureDetector mGestureDetector;
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.layout_login);
  6.  
  7. mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
  8. @Override
  9. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  10. // if (Math.abs(e1.getRawX() - e2.getRawX()) > 250) {
  11. // // System.out.println("水平方向移动距离过大");
  12. // return true;
  13. // }
  14. if (Math.abs(velocityY) < 100) {
  15. // System.out.println("手指移动的太慢了");
  16. return true;
  17. }
  18.  
  19. // 手势向下 down
  20. if ((e2.getRawY() - e1.getRawY()) > 200) {
  21. finish();//在此处控制关闭
  22. return true;
  23. }
  24. // 手势向上 up
  25. if ((e1.getRawY() - e2.getRawY()) > 200) {
  26. return true;
  27. }
  28. return super.onFling(e1, e2, velocityX, velocityY);
  29. }
  30. });
  31.  
  32. }

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

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

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

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

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

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

R.anim.slide_up_out

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

快去试试吧!

android使用GestureDetector实现手势下滑关闭页面的效果。的更多相关文章

  1. Android使用GestureDetector实现手势滑动效果

    直接看实例: package com.example.gesturedetector; import android.os.Bundle; import android.app.Activity; i ...

  2. android 判断左右滑动,上下滑动的GestureDetector简单手势检测

    直接加入监听GestureDetector放在需要判断滑动手势的地方: import android.app.Activity; import android.os.Bundle; import an ...

  3. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发 打开新页面 预加载页面 关闭页面

    创建子页面 在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动,在android手机上会出现滚动不流畅的问题: mui的解决思路是:将需要滚动的区域通过单独的webview实 ...

  4. 手势识别官方教程(2)识别常见手势用GestureDetector+手势回调接口/手势抽象类

    简介 GestureDetector识别手势. GestureDetector.OnGestureListener是识别手势后的回调接口.GestureDetector.SimpleOnGesture ...

  5. JavaScript打开窗口与关闭页面操作大全

    JavaScript新开窗口 onClick="javascript:window.location='http://www.sowsoy.com'" JavaScript新开一个 ...

  6. android学习笔记52——手势Gesture,增加手势、识别手势

    手势Gesture,增加手势 android除了提供了手势检测之外,还允许应用程序把用户手势(多个持续的触摸事件在屏幕上形成特定的形状)添加到指定文件中,以备以后使用 如果程序需要,当用户下次再次画出 ...

  7. mui中的关闭页面的几种方法

    一.总结: mui中关闭当前页面的几种方式: 1.swipeBack(暂未测试过) 2.keyEventBind(暂未测试过) 3.给标签的class加.mui-action-back(返回的是前一个 ...

  8. 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  9. 【转】Android:Bluetooth 的打开和关闭--不错

    原文网址:http://www.ifeegoo.com/android-turn-on-and-turn-off-bluetooth.html 摘要:Android 中打开和关闭 Bluetooth ...

随机推荐

  1. 附1 踩过的jedis的一些坑

    1.java.lang.Long to java.lang.B]类型转换异常 解决方案:归还资源部分,使用jedis.close() 2.jedis数组越界异常 解决方案:版本太低,升到2.8.0

  2. maskrcnn_benchmark代码分析(1)

    可以先参考:Faster-RCNN代码+理论——1/2 Object Detection and Classification using R-CNNs 使用ipdb调试 try: import ip ...

  3. 用网站(WebSite而不是WebProject)项目构建ASP.NET MVC网站

    从ASP.NET MVC第一个版本开始到现在,创建ASP.NET MVC项目的官方方法只有一个,“文件”->“新建”->“项目”,然后选择ASP.NET MVC X Web应用程序. 这种 ...

  4. iOS 开发-Certificate、App ID和Provisioning Profile之间的关系

    模拟器调试的时候有的时候不能检验出程序在真实手机上的差别,如果需要进行真机测试或者发布应用到App Store上去的时候, 公司如果没有开发过App,你可以从头开始弄,大部分都是后来接手的,那么当我们 ...

  5. 详解vue组件的keep-alive

    <keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM. <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是 ...

  6. variable_scope和name_scope差别

    先看代码:   #命名空间函数tf.variable_scope()和tf.name_scope()函数区别于使用       import tensorflow as tf       with t ...

  7. object-c 混编 调用C,C++接口

    xcode 支持 object-c 混编,在object-c 中调用c,c++接口 第一步 定义c语言 接口(File.c) #include <stdio.h> void printsB ...

  8. java之类的初始化

    概述 在java中,一个类能够包括的元素有变量,方法,代码块.这当中变量能够分为普通变量和静态变量,代码块也有静态代码块和普通代码块.在创建一个对象的时候,这个对象是怎么初始化的呢.这里我们就開始来解 ...

  9. pdo_mysql安装不了或是安装后用不了的修复教程

    目前发现wdOS及lanmp_wdcp的RPM包安装在部分系统下安装后,在安装pdo_mysql时无法安装或安装后无法使用的问题 如在安装时提示下如下 regenerate PHP parsers.c ...

  10. ZH奶酪:PHP的cURL库

    原文链接:http://coolshell.cn/articles/664.html 参考链接:http://www.runoob.com/php/php-ref-curl.html 使用PHP的cU ...