这个DEMO项目就是简单的一个界面,只需要实现OnTouchListener 和OnGestureListener的接口,再在界面中添加一个GestureDetector 的对象,用于接口实现触摸的各类事件响应,再在OnTouchListener 中进行调用即可。。。
代码:
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
/*
* 关于触摸屏的事件学习
*/
public class GestureDemo1Activity extends Activity implements OnTouchListener , OnGestureListener
{
//处理触摸事件的响应
private GestureDetector mDetector = new GestureDetector(this);
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//把触摸事件和长按键事件添加到view中
View myView = (View)findViewById(R.id.id1);
myView.setOnTouchListener(this);
myView.setLongClickable(true);
}
@Override
public boolean onTouch(View v, MotionEvent event)
{
System.out.println("点击数量:"+event.getPointerCount());
switch (event.getAction())
{
//点下按
case MotionEvent.ACTION_POINTER_DOWN:
System.out.println("onTouch ACTION_POINTER_DOWN");
break;
//按下
case MotionEvent.ACTION_DOWN:
System.out.println("onTouch ACTION_DOWN");
break;
//滑动
case MotionEvent.ACTION_MOVE:
System.out.println("onTouch ACTION_MOVE");
System.out.println("onTouch ACTION_MOVE x="+event.getX());
System.out.println("onTouch ACTION_MOVE y=" + event.getY());
break;
//起来
case MotionEvent.ACTION_UP:
System.out.println("onTouch ACTION_UP");
break;
}
//跳转到下一个中区
return mDetector.onTouchEvent(event);
}
//-------------------------------------------------------
@Override
public boolean onDown(MotionEvent e)
{
System.out.println("mDetector onDown()");
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
//e1起点 ,e2起点 , velocityX在X轴上面的速度, velocityY在Y轴上面的滑动速度
System.out.println("mDetector onFling()");
if( e1.getX() - e2.getX() > 10 )
{
System.out.println("mDetector 向左");
}
else if( e1.getX() - e2.getX() > 10 )
{
System.out.println("mDetector 向右");
}
if( e1.getY() - e2.getY() > 10 )
{
System.out.println("mDetector 向上");
}
else if( e1.getY() - e2.getY() > 10 )
{
System.out.println("mDetector 向下");
}
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
System.out.println("onLongPress()");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
//e1起点 e2起点 distanceX在X轴上面的距离 distanceY在Y轴上面的滑动距离
System.out.println("onScroll()");
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
System.out.println("onShowPress()");
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
System.out.println("onSingleTapUp()");
return false;
}
}