반응형
SMALL

▩ 멀티터치 이벤트 작성하기 - 커스텀컴포넌트

 

앱개발자 스마트폰 화면을 터치하면 터치된 위치에 원을 그려지는 애플리케이션을 코드작업이다. 그동안 배운 onTouchView, singleTouchView, 이번에는 MultiTouchView를 상속받아서 애플리케이션 코드를 만들어 봅시다.

 

1) MultiTouch 프로젝트 파일을 생성한다.

 

2)  MultiTouchActivity.java  자동생성 됩니다.

   - MultiTouchView.java 파일을 추가 합니다.

  

   ● 우선 MultiTouchView 코드를 작성합니다.

 

  public class MultiTouchView extends View{

     private static final int SIZE =60;

     final int MAX_POINTS = 10;

     float[] x = new float[MAX_POINTS];

     float[] y = new float{MAX_POINTS];

     boolean[] touching = new boolean[MAX_POINTS];

 

    private Paint mPaint;

 

    public MultiTouchView(Context context, AttributeSet attrs){

      super(context, attrs);

      initView();

    }

 

   private void initView(){

    mPaint = new Pain(Paint.ANTI_ALIAS_FLAG);

    mPaint.setColor(Color.BLUE);

    mPaint.setStyle(Paint.Style.FILL_AND_STROKE);

}

 

  public boolean onTouchEvent(MotionEvent event){

     int index = event.getActionIndex();

     int id = event.getPointerId(index);

     int action = event.getActionMasked();

 

    switch(action) {

   

    case MotionEvent.ACTION_DOWN:

    case MotionEvent.ACTION_POINTER_DOWN:

            x[id] = (int) event.getX(index);

            y[id] = (int) event.getY(index);

            touching[id] = true;

            break;

   case MotionEvent.ACTION_MOVE:

           break;

   case MotionEvent.ACTION_UP:

   case MotionEvent.ACTION_POINTER_UP:

           touching[id] = false;

           break;

   }

   invalidate();

   return true;

}

 

protected void onDraw(Canvas canvas){

   super.onDraw(canvase);

  for(int i =0; i <MAX_POINTS; i++){

   if(touching[i]){

      canvas.drawCircle(x[i], y[i],SIZE,mPaint);

    }

  }

 }

}

 

●  MultiTouchActivity.java 코드를 작성합니다.

 

 

● MultiTouch를 실행합니다.

 

 

                 

셋 손가락을 눌렀을때 나타나는 원모양입니다. MultiTouch 그냐말로 여러 개의 터치를

처리할수 있어야 한다.

반응형
LIST

+ Recent posts