본문 바로가기

코드조각모음

[android003] 멀티 터치 예제

import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.OnTouchListener;
import android.widget.*;

public class MultiTouchTest extends Activity implements OnTouchListener
{
    StringBuilder builder = new StringBuilder();
    TextView textView;
    float[] x = new float[10];
    float[] y = new float[10];
    boolean[] touched = new boolean[10];
   
    private void updateTextView()
    {
        builder.setLength(0);
        for(int i=0; i<10; i++)
        {
            builder.append(touched[i]);
            builder.append(", ");
            builder.append(x[i]);
            builder.append(", ");
            builder.append(y[i]);
            builder.append("\n");
        }
        textView.setText(builder.toString());
    }
   
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        textView = new TextView(this);
        textView.setText("Touch and drag(multiple fingers supported)!");
        textView.setOnTouchListener(this);
        setContentView(textView);
    }
   
    @Override
    public boolean onTouch(View view, MotionEvent event)
    {
        int action = event.getAction() & MotionEvent.ACTION_MASK;
        int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK);
        pointerIndex = pointerIndex >> MotionEvent.ACTION_POINTER_ID_SHIFT;
        int pointerId = event.getPointerId(pointerIndex);
       
        switch(action)
        {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_POINTER_DOWN:
            touched[pointerId] = true;
            x[pointerId] = (int)event.getX(pointerIndex);
            x[pointerId] = (int)event.getY(pointerIndex);
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_POINTER_UP:
        case MotionEvent.ACTION_CANCEL:
            touched[pointerId] = false;
            x[pointerId] = (int)event.getX(pointerIndex);
            x[pointerId] = (int)event.getY(pointerIndex);
            break;
        case MotionEvent.ACTION_MOVE:
            int pointerCount = event.getPointerCount();
            for(int i=0; i<pointerCount; i++)
            {
                pointerIndex = i;
                pointerId = event.getPointerId(pointerIndex);
                x[pointerId] = (int)event.getX(pointerIndex);
                y[pointerId] = (int)event.getY(pointerIndex);
            }
            break;
        }
        updateTextView();
        return true;
    }

}
 

'코드조각모음' 카테고리의 다른 글

[andorid005] 가속도계 예제  (0) 2011.11.06
[android004] 키입력 예제  (0) 2011.11.06
[android002] 싱글 터치 예제  (0) 2011.11.06
[android001] 액티비티 생명 주기 예제  (0) 2011.11.06
[Java006] Boxing & Unboxing  (0) 2011.10.12