import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.PointF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class MulitTouchView extends View {
private static final String TAG="MulitTouchView";
private List mColors;
private List mTouchPoints=new ArrayList();
private Paint mPaint;
public MulitTouchView(Context context) {
this(context,null);
}
public MulitTouchView(Context context, AttributeSet attrs) {
super(context, attrs);
mColors=new ArrayList();
mColors.add(Color.RED);
mColors.add(Color.BLUE);
mColors.add(Color.GREEN);
mColors.add(Color.CYAN);
mColors.add(Color.YELLOW);
mColors.add(Color.DKGRAY);
mColors.add(Color.MAGENTA);
mColors.add(Color.GRAY);
mColors.add(Color.LTGRAY);
mColors.add(Color.BLACK);
mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Style.STROKE);
mPaint.setStrokeWidth(5);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int count=event.getPointerCount();
int action=(event.getAction()&MotionEvent.ACTION_MASK);//多指和单指合并
switch (action) {
case MotionEvent.ACTION_DOWN:
mTouchPoints.clear();
for(int i=0;i
int id=event.getPointerId(i);
if(id>=count){
return false;
}
float x=event.getX(id);
float y=event.getY(id);
ArrayList points=new ArrayList();
PointF point=new PointF();
point.set(x,y);
points.add(point);
mTouchPoints.add(point);
}
invalidate();
return true;
case MotionEvent.ACTION_MOVE:
mTouchPoints.clear();
for(int i=0;i
int id=event.getPointerId(i);
if(id>=count){
continue;
}
float x=event.getX(id);
float y=event.getY(id);
PointF point=new PointF();
point.set(x,y);
mTouchPoints.add(point);
}
invalidate();
return true;
case MotionEvent.ACTION_UP:
return true;
default:
return super.onTouchEvent(event);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for(int i=0;i
PointF p=mTouchPoints.get(i);
mPaint.setColor(mColors.get(i));
canvas.drawCircle(p.x, p.y, 80, mPaint);
}
}
}