@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
// MotionEvent.ACTION_DOWN:在第一个点被按下时触发
// MotionEvent.ACTION_UP:当屏幕上唯一的点被放开时触发
// MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。
// MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。
// MotionEvent.ACTION_MOVE:当有点在屏幕上移动时触发。值得注意的是,由于它的灵敏度很高,而我们的手指又不可能完全静止(即使我们感觉不到移动,但其实我们的手指也在不停地抖动),所以实际的情况是,基本上只要有点在屏幕上,此事件就会一直不停地被触发。
//
case MotionEvent.ACTION_DOWN:
mode = DRAG;//一个点触摸
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;//0个点触摸
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 10f)
{
mode = ZOOM;//两个点触摸
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == ZOOM)
{
// 正在移动的点距初始点的距离
float newDist = spacing(event);
if (newDist > oldDist+1)
{
zoomOut();//放大字体
}
if (newDist < oldDist+1)
{
zoomIn();//缩小字体
}
}
break;
}
return true;
}
/**
* 求出2个触点间的 距离
*
* @param event
* @return
*/
private float spacing(MotionEvent event)
{
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);//sqrt 返回最接近的平方根。
}
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
// MotionEvent.ACTION_DOWN:在第一个点被按下时触发
// MotionEvent.ACTION_UP:当屏幕上唯一的点被放开时触发
// MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。
// MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。
// MotionEvent.ACTION_MOVE:当有点在屏幕上移动时触发。值得注意的是,由于它的灵敏度很高,而我们的手指又不可能完全静止(即使我们感觉不到移动,但其实我们的手指也在不停地抖动),所以实际的情况是,基本上只要有点在屏幕上,此事件就会一直不停地被触发。
//
case MotionEvent.ACTION_DOWN:
mode = DRAG;//一个点触摸
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;//0个点触摸
break;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist > 10f)
{
mode = ZOOM;//两个点触摸
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == ZOOM)
{
// 正在移动的点距初始点的距离
float newDist = spacing(event);
if (newDist > oldDist+1)
{
zoomOut();//放大字体
}
if (newDist < oldDist+1)
{
zoomIn();//缩小字体
}
}
break;
}
return true;
}
/**
* 求出2个触点间的 距离
*
* @param event
* @return
*/
private float spacing(MotionEvent event)
{
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);//sqrt 返回最接近的平方根。
}