歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android繪圖開發教程 - 手寫板

Android繪圖開發教程 - 手寫板

日期:2017/3/1 10:52:51   编辑:Linux編程

效果圖:

View代碼:activity裡設置顯示該view即可

  1. package com.tszy.view;
  2. import Android.content.Context;
  3. import android.graphics.Bitmap;
  4. import android.graphics.Bitmap.Config;
  5. import android.graphics.Canvas;
  6. import android.graphics.Color;
  7. import android.graphics.Paint;
  8. import android.graphics.Path;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. /**
  12. * 雙緩沖區繪圖demo 手寫板
  13. *
  14. * @author JianbinZhu
  15. *
  16. */
  17. public class View7 extends View {
  18. private Paint paint;
  19. private Canvas cacheCanvas;
  20. private Bitmap cachebBitmap;
  21. private Path path;
  22. public View7(Context context) {
  23. super(context);
  24. // TODO Auto-generated constructor stub
  25. paint = new Paint();
  26. paint.setAntiAlias(true);
  27. paint.setStrokeWidth(3);
  28. paint.setStyle(Paint.Style.STROKE);
  29. paint.setColor(Color.CYAN);
  30. path = new Path();
  31. cachebBitmap = Bitmap.createBitmap(480, 320, Config.ARGB_8888);
  32. cacheCanvas = new Canvas(cachebBitmap);
  33. }
  34. @Override
  35. protected void onDraw(Canvas canvas) {
  36. canvas.drawColor(Color.BLACK);
  37. //繪制上一次的,否則不連貫
  38. canvas.drawBitmap(cachebBitmap, 0, 0, null);
  39. canvas.drawPath(path, paint);
  40. }
  41. private float cur_x, cur_y;
  42. private boolean isMoving;
  43. @Override
  44. public boolean onTouchEvent(MotionEvent event) {
  45. // TODO Auto-generated method stub
  46. float x = event.getX();
  47. float y = event.getY();
  48. switch (event.getAction()) {
  49. case MotionEvent.ACTION_DOWN : {
  50. cur_x = x;
  51. cur_y = y;
  52. path.moveTo(cur_x, cur_y);
  53. isMoving = true;
  54. break;
  55. }
  56. case MotionEvent.ACTION_MOVE : {
  57. // 二次曲線方式繪制
  58. path.quadTo(cur_x, cur_y, x, y);
  59. // 下面這個方法貌似跟上面一樣
  60. // path.lineTo(x, y);
  61. cur_x = x;
  62. cur_y = y;
  63. break;
  64. }
  65. case MotionEvent.ACTION_UP : {
  66. // 鼠標彈起保存最後狀態
  67. cacheCanvas.drawPath(path, paint);
  68. path.reset();
  69. isMoving = false;
  70. break;
  71. }
  72. }
  73. // 刷新界面
  74. invalidate();
  75. return true;
  76. }
  77. }
Copyright © Linux教程網 All Rights Reserved