android Canvas 畫板 和 OnTouch 事件
阿新 • • 發佈:2019-01-22
public class MainActivity extends Activity { ImageView image; Button bt_save, bt_clear; int downX, downY, moveX, moveY; Canvas canvas; Bitmap bitmap; Paint paint; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } public void initView() { image = (ImageView) findViewById(R.id.image); bt_clear = (Button) findViewById(R.id.bt_clear); bt_save = (Button) findViewById(R.id.bt_save); image.setOnTouchListener(new MyOnTouchListener()); } class MyOnTouchListener implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: System.out.println("按下了"); downX = (int) event.getX(); downY = (int) event.getY(); if (bitmap == null) { bitmap = Bitmap.createBitmap(image.getWidth(), image.getHeight(), Config.ARGB_4444); 建立Bitmap canvas = new Canvas(bitmap); 給畫板貼上一副畫紙 paint = new Paint(); //建立畫筆 paint.setStrokeWidth(5); //設定畫筆粗細 paint.setColor(Color.GREEN); //畫筆顏色 canvas.drawColor(Color.BLUE); //畫紙顏色 image.setImageBitmap(bitmap); } break; case MotionEvent.ACTION_MOVE: moveX = (int) event.getX(); moveY = (int) event.getY(); canvas.drawLine(downX, downY, moveX, moveY, paint); //畫線 downX = moveX; downY = moveY; image.setImageBitmap(bitmap); System.out.println("移動"); break; case MotionEvent.ACTION_UP: System.out.println("鬆開了"); // image.setImageBitmap(bitmap); break; default: break; } return true; } } }