android开发之为activity增加左右手势识别示例

时间:2021-09-30 12:41:50 

android开发中为activity增加左右手势识别,如右滑关闭当前页面。


/*
 *  for左右手势
 *  1.复制下面的内容到目标Activity
 *  2.目标Activity的onCreate()调用initGesture()
 *  3.目标Activity需implements OnTouchListener, OnGestureListener
 */
   private GestureDetector mGestureDetector;
   private int verticalMinDistance = 180;
   private int minVelocity         = 0;

   private void initGesture() {
    mGestureDetector = new GestureDetector((OnGestureListener) this);
   }

  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

       if (e1.getX() - e2.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) {

           // 切换Activity
           // Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
           // startActivity(intent);
           //Toast.makeText(this, "向左手势", Toast.LENGTH_SHORT).show();
       } else if (e2.getX() - e1.getX() > verticalMinDistance && Math.abs(velocityX) > minVelocity) {

           // 切换Activity
           // Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
           // startActivity(intent);
        //Toast.makeText(this, "向右手势", Toast.LENGTH_SHORT).show();
           finish();
           overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
       }

       return false;
   }

@Override
public void onLongPress(MotionEvent arg0) {
 // TODO Auto-generated method stub

}

@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
  float arg3) {
 // TODO Auto-generated method stub
 return false;
}

@Override
public void onShowPress(MotionEvent arg0) {
 // TODO Auto-generated method stub

}

@Override
public boolean onSingleTapUp(MotionEvent arg0) {
 // TODO Auto-generated method stub
 return false;
}

@Override
public boolean onTouch(View v, MotionEvent event) {
 // TODO Auto-generated method stub
 return mGestureDetector.onTouchEvent(event);
}

@Override
public boolean onDown(MotionEvent arg0) {
 // TODO Auto-generated method stub
 return false;
}

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) {
 mGestureDetector.onTouchEvent(ev);
 return super.dispatchTouchEvent(ev);
  } 

push_right_in.xml


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="500" />
    <alpha android:fromAlpha="0.1" android:toAlpha="1.0"
        android:duration="500"/>
</set>

push_right_out.xml


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="500" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0.1"
        android:duration="500"/>
</set>

标签:android,手势,activity
0
投稿

猜你喜欢

  • Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

    2022-05-24 17:14:13
  • Java实现冒泡排序算法

    2023-07-13 03:02:28
  • 详解Android的.aar文件生成方法以及使用技巧

    2023-08-06 06:43:20
  • Java8中forEach语句循环一个List和Map

    2021-06-02 07:03:54
  • java中Class.getMethods()和Class.getDeclaredMethods()方法的区别

    2021-05-28 23:05:46
  • Java中实现获取路径的方法汇总

    2022-12-19 08:10:54
  • 深入理解Java中的接口

    2023-11-08 23:52:43
  • 详解用Eclipse如何创建Web项目

    2023-11-11 05:41:01
  • 详解Mybatis框架SQL防注入指南

    2023-09-16 02:49:02
  • SpringCloud Gateway HttpWebHandlerAdapter链路调用请求流程介绍

    2023-04-29 00:12:18
  • C#获取程序文件相关信息的方法

    2021-12-12 05:34:51
  • Android使用JobScheduler定期推送本地通知实例代码

    2023-07-26 22:43:28
  • Java 函数式编程梳理

    2023-01-17 04:16:34
  • android图片处理 让图片变成圆形

    2023-10-03 00:47:30
  • SpringBoot配置拦 截器实现过程详解

    2023-11-24 17:14:58
  • springboot中的pom文件 project报错问题

    2022-01-24 00:41:55
  • Java多线程 Callable、Future 和FutureTask

    2023-07-24 08:09:23
  • springboot整合spring-retry的实现示例

    2022-01-13 01:25:53
  • SpringMVC结合天气api实现天气查询

    2021-06-01 16:56:41
  • 示例解析java面向对象编程封装与访问控制

    2021-10-18 19:55:19
  • asp之家 软件编程 m.aspxhome.com