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

Posted clnchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android使用GestureDetector实现手势滑动效果相关的知识,希望对你有一定的参考价值。

直接看实例:
package com.example.gesturedetector;

import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.widget.Toast;

public class MainActivity extends Activity implements OnGestureListener {

private GestureDetector mGestureDetector;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGestureDetector = new GestureDetector(this, this);
}

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

@Override
public boolean onDown(MotionEvent arg0) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();
return false;
}

@Override
public boolean onFling(MotionEvent startEvent, MotionEvent endEvent,
float velocityX, float velocityY) {
// TODO Auto-generated method stub
if (startEvent.getY() - endEvent.getY() > 100) {
Toast.makeText(this, "手势向上滑动", Toast.LENGTH_SHORT).show();
return true;
} else if (startEvent.getY() - endEvent.getY() < -100) {
Toast.makeText(this, "手势向下滑动", Toast.LENGTH_SHORT).show();
return true;
} else if (startEvent.getX() - endEvent.getX() > 100) {
Toast.makeText(this, "手势向左滑动", Toast.LENGTH_SHORT).show();
return true;
} else if (startEvent.getX() - endEvent.getX() < -100) {
Toast.makeText(this, "手势向右滑动", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}

@Override
public void onLongPress(MotionEvent arg0) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onLongPress ", Toast.LENGTH_SHORT).show();
}

@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
float arg3) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onScroll", Toast.LENGTH_SHORT).show();
return false;
}

@Override
public void onShowPress(MotionEvent arg0) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();
}

@Override
public boolean onSingleTapUp(MotionEvent arg0) {
// TODO Auto-generated method stub
//Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();
return false;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}
事件解释:
1.   onDown(MotionEvent e):down事件;
2.   onSingleTapUp(MotionEvent e):一次点击up事件;
3.   onShowPress(MotionEvent e):down事件发生而move或则up还没发生前触发该事件;
4.   onLongPress(MotionEvent e):长按事件;
5.   onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑动手势事件;
6.   onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖动事件。

以上是关于Android使用GestureDetector实现手势滑动效果的主要内容,如果未能解决你的问题,请参考以下文章

Android_GestureDetector手势滑动使用

Android_GestureDetector手势滑动使用

Android使用GestureDetector进行手势检测

Android使用GestureDetector进行手势检测

Android使用GestureDetector进行手势检测

Android手势检测——GestureDetector全面分析