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
投稿

猜你喜欢

  • WPF实现雷达图(仿英雄联盟)的示例代码

    2023-07-13 18:46:53
  • C#检测是否有危险字符的SQL字符串过滤方法

    2023-10-11 12:48:48
  • Spring实战之协调作用域不同步的Bean操作示例

    2023-01-23 02:48:10
  • java Swing基础教程之图形化实例代码

    2023-06-30 03:15:20
  • SpringMVC之AbstractAnnotationConfigDispatcherSer解读

    2023-06-21 21:42:32
  • C++集体数据交换实现示例讲解

    2023-12-17 11:35:07
  • C#中Dynamic和Dictionary性能比较

    2022-05-11 12:16:33
  • 谈C# using的用法与好处

    2022-02-10 08:20:01
  • java控制台实现学生信息管理系统

    2023-11-29 02:05:20
  • Android 七种进度条的样式

    2022-01-22 07:15:23
  • java字符串的重要使用方法以及实例

    2023-11-13 23:11:51
  • Android蓝牙库FastBle的基础入门使用

    2021-09-21 07:34:21
  • C#读取文件MD5值的实现代码

    2021-10-08 18:01:39
  • Kotlin语言使用WebView示例介绍

    2021-10-14 05:56:21
  • Java中的内存泄露问题和解决办法

    2022-05-12 20:02:35
  • SpringBoot通过@Value实现给静态变量注入值详解

    2022-04-30 14:30:37
  • Android 中CheckBox多项选择当前的position信息提交的示例代码

    2022-05-15 19:13:51
  • Android:利用SharedPreferences实现自动登录

    2023-05-24 07:53:33
  • 使用mutex实现应用程序单实例运行代码分享

    2023-09-18 22:45:11
  • Java拷贝数组方法Arrays.copyOf()是地址传递的证明实例

    2023-11-08 11:51:29
  • asp之家 软件编程 m.aspxhome.com