Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. package com.example.paint;
  2.  
  3. import android.graphics.Bitmap;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;
  7. import android.graphics.Path;
  8. import android.view.MotionEvent;
  9. import android.view.View;
  10. import android.graphics.PorterDuff;
  11. import android.graphics.PorterDuffXfermode;
  12. import android.util.TypedValue;
  13. import android.content.Context;
  14. import android.util.AttributeSet;
  15.  
  16. public class DrawingView extends View{
  17. private Path drawPath;
  18. private boolean erase = false;
  19. private Paint drawPaint, canvasPaint;
  20. private Canvas drawCanvas;
  21. private int paintColor = 0xFF660000;
  22. private Bitmap canvasBitmap;
  23. private float brushSize, lastBrushSize;
  24.  
  25. public DrawingView(Context context, AttributeSet attrs) {
  26. super(context, attrs);
  27. setupDrawing();
  28. }
  29. private void startNew() {
  30. drawCanvas.drawColor(0, PorterDuff.Mode.CLEAR);
  31. invalidate();
  32. }
  33. private void setErase(boolean isErase) {
  34. erase = isErase;
  35. if (erase) drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
  36. else drawPaint.setXfermode(null);
  37. }
  38. public void setBrushSize(float newSize) {
  39. float pixelAmount = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newSize, getResources().getDisplayMetrics());
  40. brushSize = pixelAmount;
  41. drawPaint.setStrokeWidth(brushSize);
  42. }
  43. public void setLastBrushSize(float lastSize) {
  44. lastBrushSize = lastSize;
  45. }
  46. public float getBrushSize() {
  47. return lastBrushSize;
  48. }
  49. @Override
  50. protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  51. super.onSizeChanged(w, h, oldw, oldh);
  52. canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
  53. drawCanvas = new Canvas(canvasBitmap);
  54. }
  55. @Override
  56. protected void onDraw(Canvas canvas) {
  57. canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
  58. canvas.drawPath(drawPath, drawPaint);
  59. }
  60. @Override
  61. public boolean onTouchEvent (MotionEvent event) {
  62. float touchX = event.getX();
  63. float touchY = event.getY();
  64. switch (event.getAction()) {
  65. case MotionEvent.ACTION_DOWN:
  66. drawPath.moveTo(touchX, touchY);
  67. break;
  68. case MotionEvent.ACTION_MOVE:
  69. drawPath.lineTo(touchX, touchY);
  70. break;
  71. case MotionEvent.ACTION_UP:
  72. drawCanvas.drawPath(drawPath, drawPaint);
  73. drawPath.reset();
  74. break;
  75. default:
  76. return false;
  77. }
  78. invalidate();
  79. return true;
  80. }
  81. public void setColor(String newColor) {
  82. invalidate();
  83. paintColor = Color.parseColor(newColor);
  84. drawPaint.setColor(paintColor);
  85. }
  86. public void setupDrawing() {
  87. drawPath = new Path();
  88. drawPaint = new Paint();
  89. drawPaint.setColor(paintColor);
  90. drawPaint.setAntiAlias(true);
  91. drawPaint.setStrokeWidth(5);
  92. drawPaint.setStyle(Paint.Style.STROKE);
  93. drawPaint.setStrokeJoin(Paint.Join.ROUND);
  94. drawPaint.setStrokeCap(Paint.Cap.ROUND);
  95. canvasPaint = new Paint(Paint.DITHER_FLAG);
  96. brushSize = 10;
  97. lastBrushSize = brushSize;
  98. drawPaint.setStrokeWidth(brushSize);
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement