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