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<Integer> mColors;private List<PointF> mTouchPoints=new ArrayList<PointF>();private Paint mPaint;public MulitTouchView(Context context) {this(context,null);}public MulitTouchView(Context context, AttributeSet attrs) {super(context, attrs);mColors=new ArrayList<Integer>();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);}@Overridepublic 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<count;i++){int id=event.getPointerId(i);if(id>=count){return false;}float x=event.getX(id);float y=event.getY(id);ArrayList<PointF> points=new ArrayList<PointF>();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<count;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);}}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);for(int i=0;i<mTouchPoints.size();i++){PointF p=mTouchPoints.get(i);mPaint.setColor(mColors.get(i));canvas.drawCircle(p.x, p.y, 80, mPaint);}}}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. SQL根据某个字段分组查询:
  2. 特殊符号对应的ASCII码
  3. java.util.Date与java.sql.Date
  4. java之生成可重复执行的sql脚本
  5. Mysql-5.7 x64安装
  6. sqlite3使用教程1 SQLite 命令
  7. Linux系统下安装MySql 5.7.17 全过程
  8. SQL Sever数据库卡事务
  9. 查询自定义VO对象的sql
  10. 如果没有明确使用ISNULL,则左连接失败