2011年1月26日 星期三

[Android] 擷取使用者觸碰螢幕座標位置

開一個專案
你需要implement OnTouchListener
並且實做onTouch function


當你touch screen的時候
就可以印出x,y的位置
Source code:
http://dl.dropbox.com/u/2452511/AndroidAP/GetFingerTouchPos.tar.gz

測試平台: Android 2.2

Update: 20110301
此外
在onCreate地方
替你的layout加上
setOnTouchListener(this);
才會接得到

透過Facebook分享

5 則留言:

yazu 提到...

真的好感謝您的分享!!!

鍾志均 提到...

能對你有幫助
讓我感到非常高興

Tony0921 提到...

大感謝 Nelson大師的sample code.

Tony0921 提到...

大感謝 Nelson大師的sample code.

Unknown 提到...

int pointerCount = event.getPointerCount();
sb.append(String.format("節點數: %d %n", pointerCount));

switch( event.getAction() )
{
case MotionEvent.ACTION_DOWN: // 按下

if( pointerCount == 4 ) // 多點觸控
{
gTouchX1 = (float) event.getX(0); // 第一個觸控點
gTouchY1 = (float) event.getY(0);
gTouchX2 = (float) event.getX(1); // 第二個觸控點
gTouchY2 = (float) event.getY(1);
gTouchX3 = (float) event.getX(2); // 第三個觸控點
gTouchY3 = (float) event.getY(2);
gTouchX4 = (float) event.getX(3); // 第四個觸控點
gTouchY4 = (float) event.getY(3);
}
break;

case MotionEvent.ACTION_MOVE: // 拖曳移動
//if( pointerCount == 1 ) // 單點觸控
//{
// gTouchX = (int) event.getX();
// gTouchY = (int) event.getY();
//}
if( pointerCount == 4 ) // 多點觸控
{
gTouchX1 = (float) event.getX(0); // 第一個觸控點
gTouchY1 = (float) event.getY(0);
gTouchX2 = (float) event.getX(1); // 第二個觸控點
gTouchY2 = (float) event.getY(1);
gTouchX3 = (float) event.getX(2); // 第三個觸控點
gTouchY3 = (float) event.getY(2);
gTouchX4 = (float) event.getX(3); // 第四個觸控點
gTouchY4 = (float) event.getY(3);
}
break;

case MotionEvent.ACTION_UP: // 放開
//sb.append(String.format("pointer : (%.1f,%.1f) %n", gTouchX, gTouchY));

break;
}
sb.append(String.format("pointer : (%.1f,%.1f) %n", gTouchX1, gTouchY1));
sb.append(String.format("pointer : (%.1f,%.1f) %n", gTouchX2, gTouchY2));
sb.append(String.format("pointer : (%.1f,%.1f) %n", gTouchX3, gTouchY3));
sb.append(String.format("pointer : (%.1f,%.1f) %n", gTouchX4, gTouchY4));
float TotalX=gTouchX1+gTouchX2+gTouchX3+gTouchX4;
float TotalY=gTouchY1+gTouchY2+gTouchY3+gTouchY4;
sb.append(String.format("X軸總計 : (%.1f) %n", TotalX));
sb.append(String.format("Y軸總計 : (%.1f) %n", TotalY));


if (gTouchX1 > 200 && gTouchX1<400 && gTouchY1 > 200 && gTouchY1<400)
if (gTouchX2 > 400 && gTouchX2<600 && gTouchY2 > 400 && gTouchY2<600)
if (gTouchX3 > 600 && gTouchX3 < 800 && gTouchY3 > 600 && gTouchY3<800)
if (gTouchX4 > 800 && gTouchX4<1000 && gTouchY4 > 800 && gTouchY4<1000)
sb.append(String.format("全部進洞 %n"));
else
sb.append(String.format("未進洞 %n"));
else
sb.append(String.format("未進洞 %n"));
else
sb.append(String.format("未進洞 %n"));
else
sb.append(String.format("未進洞 %n"));
為什麼我這樣打
無法顯示觸碰螢幕時的座標 一定要移動才會顯示??
是為什麼?