为了完成可以记录滑动和缩放的位置信息,尝试了包括GestureDector类和OnTouchListener类,虽然能够很好的识别具体手势,可是在区分单点还是多点触控方面还是有些欠缺。
本文对TextView进行监听,在position中显示记录触控的痕迹。
tv = (TextView)findViewById(R.id.textv);
position = (TextView)findViewById(R.id.position);
通过对event.getPointerCount()来对点的数目进行判断
通过ACYION_POINTER_DOWN对第二个点进行记录,同时记得用这个参数时要配合ACTION_MASK在switch语句中
tv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()& MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_DOWN:
position.setText("N1S"+" ("+<span style="font-family: Arial, Helvetica, sans-serif;">event.getX()</span><span style="font-family: Arial, Helvetica, sans-serif;">+" , "+</span><span style="font-family: Arial, Helvetica, sans-serif;">event.getY()</span><span style="font-family: Arial, Helvetica, sans-serif;">+")");</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span> break;
case MotionEvent.ACTION_POINTER_DOWN:
position.append("N2S"+" ("+<span style="font-family: Arial, Helvetica, sans-serif;">event.getX()</span><span style="font-family: Arial, Helvetica, sans-serif;">+" , "+</span><span style="font-family: Arial, Helvetica, sans-serif;">event.getY()</span><span style="font-family: Arial, Helvetica, sans-serif;">+")");</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span> break;
case MotionEvent.ACTION_MOVE:
if(event.getPointerCount()<2 ){
position.append("M" + " (" + event.getX() + " , " + event.getY() + ")");}
else{
position.append("TM"+" (" + event.getX(0) + " , " + event.getY(0) + ")"
+" (" + event.getX(1) + " , " + event.getY(1) + ")");
}
}
return true;
}
});