封装的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; } }