爲了完成可以記錄滑動和縮放的位置信息,嘗試了包括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;
}
});