封装的android监听手指左右滑动屏幕的事件类分享
左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了。
简单的只需要几行就可以了,下面那个类是封装好了的。
packagecom.example.test;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.util.Log;
importandroid.widget.RelativeLayout;
publicclassMainActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//这里的xml是一个空白的layout
//需要监听左右滑动事件的view
RelativeLayoutview=(RelativeLayout)this.findViewById(R.id.layout);
//setLongClickable是必须的
view.setLongClickable(true);
view.setOnTouchListener(newMyGestureListener(this));
}
/**
*继承GestureListener,重写left和right方法
*/
privateclassMyGestureListenerextendsGestureListener{
publicMyGestureListener(Contextcontext){
super(context);
}
@Override
publicbooleanleft(){
Log.e("test","向左滑");
returnsuper.left();
}
@Override
publicbooleanright(){
Log.e("test","向右滑");
returnsuper.right();
}
}
}
packagecom.example.test;
importandroid.content.Context;
importandroid.view.GestureDetector.SimpleOnGestureListener;
importandroid.view.GestureDetector;
importandroid.view.View;
importandroid.view.View.OnTouchListener;
importandroid.view.MotionEvent;
/**
*实现监听左右滑动的事件,哪个view需要的时候直接setOnTouchListener就可以用了
*@authorLinZhiquan
*
*/
publicclassGestureListenerextendsSimpleOnGestureListenerimplementsOnTouchListener{
/**左右滑动的最短距离*/
privateintdistance=100;
/**左右滑动的最大速度*/
privateintvelocity=200;
privateGestureDetectorgestureDetector;
publicGestureListener(Contextcontext){
super();
gestureDetector=newGestureDetector(context,this);
}
/**
*向左滑的时候调用的方法,子类应该重写
*@return
*/
publicbooleanleft(){
returnfalse;
}
/**
*向右滑的时候调用的方法,子类应该重写
*@return
*/
publicbooleanright(){
returnfalse;
}
@Override
publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,
floatvelocityY){
//TODOAuto-generatedmethodstub
//e1:第1个ACTION_DOWNMotionEvent
//e2:最后一个ACTION_MOVEMotionEvent
//velocityX:X轴上的移动速度(像素/秒)
//velocityY:Y轴上的移动速度(像素/秒)
//向左滑
if(e1.getX()-e2.getX()>distance
&&Math.abs(velocityX)>velocity){
left();
}
//向右滑
if(e2.getX()-e1.getX()>distance
&&Math.abs(velocityX)>velocity){
right();
}
returnfalse;
}
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
//TODOAuto-generatedmethodstub
gestureDetector.onTouchEvent(event);
returnfalse;
}
publicintgetDistance(){
returndistance;
}
publicvoidsetDistance(intdistance){
this.distance=distance;
}
publicintgetVelocity(){
returnvelocity;
}
publicvoidsetVelocity(intvelocity){
this.velocity=velocity;
}
publicGestureDetectorgetGestureDetector(){
returngestureDetector;
}
publicvoidsetGestureDetector(GestureDetectorgestureDetector){
this.gestureDetector=gestureDetector;
}
}