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);
才會接得到

5 則留言:

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

    回覆刪除
  2. 能對你有幫助
    讓我感到非常高興

    回覆刪除
  3. 大感謝 Nelson大師的sample code.

    回覆刪除
  4. 大感謝 Nelson大師的sample code.

    回覆刪除
  5. 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"));
    為什麼我這樣打
    無法顯示觸碰螢幕時的座標 一定要移動才會顯示??
    是為什麼?

    回覆刪除