Java code ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94      class  CustomView1  extends  View{                     private  Paint paint;          private  ArrayList graphics =  new  ArrayList();          private  Paint  lPaint;          private  Path   mPath;          private   int  of =  0 ;          private  Boolean over = false ;          private  float  mX, mY;          private  static  final  float  TOUCH_TOLERANCE =  4 ;             public  CustomView1(Context context) {              super (context);              paint =  new  Paint(Paint.ANTI_ALIAS_FLAG);              paint.setColor(Color.RED);              paint.setStrokeJoin(Paint.Join.ROUND);              paint.setStrokeCap(Paint.Cap.ROUND);              paint.setStrokeWidth( 65 );                            lPaint =  new  Paint(Paint.ANTI_ALIAS_FLAG);              lPaint.setColor(Color.BLACK);              lPaint.setStyle(Paint.Style.STROKE); //空心              lPaint.setStrokeJoin(Paint.Join.ROUND);              lPaint.setStrokeCap(Paint.Cap.ROUND);              lPaint.setStrokeWidth( 5 );                            mPath =  new  Path();                        }                    @Override          public  boolean  onTouchEvent(MotionEvent event) {              float  x = event.getX();              float  y = event.getY();              switch  (event.getAction()) {              case  MotionEvent.ACTION_DOWN:                  over =  false ;                  graphics.clear();                  of= 0 ;                  graphics.add( new  PointF(x, y));                   touch_start(x, y);                   invalidate();                  break ;              case  MotionEvent.ACTION_MOVE:                  graphics.add( new  PointF(x, y));                  touch_move(x, y);                  invalidate();                  break ;              case  MotionEvent.ACTION_UP:                  over =  true ;                  touch_up();                  invalidate();                  break ;          }                 return  true ;          }                    private  void  touch_start( float  x,  float  y) {              mPath.reset();              mPath.moveTo(x, y);              mX = x;              mY = y;          }          private  void  touch_move( float  x,  float  y) {              float  dx = Math.abs(x - mX);              float  dy = Math.abs(y - mY);              if  (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {                  mPath.quadTo(mX, mY, (x + mX)/ 2 , (y + mY)/ 2 );                  mX = x;                  mY = y;              }          }          private  void  touch_up() {              mPath.lineTo(mX, mY);          }             @Override          protected  void  onDraw(Canvas canvas) {          //    canvas.drawColor(Color.TRANSPARENT,Mode.CLEAR);              canvas.drawColor(Color.WHITE); //清理              canvas.drawPath(mPath, lPaint);              if (over&&graphics.size()> 0 ){                  canvas.drawPoint(graphics.get(of).x, graphics.get(of).y, paint);                  of+= 1 ;                  if (of                      if (of==graphics.size()- 1 ){                          mPath.reset(); //移动完成后移除线条                      }                      invalidate();                  }              }          }      }

更多相关文章

  1. 清除app数据等同于设置中的清除数据
  2. cleanmymac x激活码(共享激活码秘钥)永久使用
  3. GNOME Mutter的代码清理工作将促进支持Vulkan
  4. SpaceSniffer(磁盘大小扫描分析) 彻底解决C盘爆满问题 清理C盘必
  5. Small Structures:低载量Pt纳米团簇锚定在石墨烯空心球上用于高效
  6. Small Methods:精确调控的自模板法合成高结晶度的Cu2O空心纳米盒
  7. AFM:具有优异储钾性能的氮/磷共掺杂空心多孔碗状碳负极
  8. 【DB笔试面试702】在Oracle中,如何定时清理INACTIVE状态的会话?
  9. Linux下自动清理超过指定大小文件的方法

随机推荐

  1. lambda表达式介绍以及Android(安卓)Studi
  2. Android入门教程(二)之------搭建 Androi
  3. Android Map demo
  4. Android SDK Manager 的介绍
  5. Android热修复
  6. android 日期时间选择器
  7. Android AlertDialog ————单选对话框
  8. 隐藏菜单APP显示图标
  9. android init.rc增加一个自定义的service
  10. Android中循环的几种方式