멀티터치 이벤트 작성하기-커스텀컴포넌트
▩ 멀티터치 이벤트 작성하기 - 커스텀컴포넌트 ▩
앱개발자 스마트폰 화면을 터치하면 터치된 위치에 원을 그려지는 애플리케이션을 코드작업이다. 그동안 배운 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 그냐말로 여러 개의 터치를
처리할수 있어야 한다.