Android绘图学习 - 手写板
16lz
2022-07-29
效果图:
View代码:activity里设置显示该view即可
package com.tszy.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.view.MotionEvent;import android.view.View;/** * 双缓冲区绘图demo 手写板 * * @author JianbinZhu * */public class View7 extends View {private Paint paint;private Canvas cacheCanvas;private Bitmap cachebBitmap;private Path path;public View7(Context context) {super(context);// TODO Auto-generated constructor stubpaint = new Paint();paint.setAntiAlias(true);paint.setStrokeWidth(3);paint.setStyle(Paint.Style.STROKE);paint.setColor(Color.CYAN);path = new Path();cachebBitmap = Bitmap.createBitmap(480, 320, Config.ARGB_8888);cacheCanvas = new Canvas(cachebBitmap);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawColor(Color.BLACK);//绘制上一次的,否则不连贯canvas.drawBitmap(cachebBitmap, 0, 0, null);canvas.drawPath(path, paint);}private float cur_x, cur_y;private boolean isMoving;@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubfloat x = event.getX();float y = event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN : {cur_x = x;cur_y = y;path.moveTo(cur_x, cur_y);isMoving = true;break;}case MotionEvent.ACTION_MOVE : {// 二次曲线方式绘制path.quadTo(cur_x, cur_y, x, y);// 下面这个方法貌似跟上面一样// path.lineTo(x, y);cur_x = x;cur_y = y;break;}case MotionEvent.ACTION_UP : {// 鼠标弹起保存最后状态cacheCanvas.drawPath(path, paint);path.reset();isMoving = false;break;}}// 刷新界面invalidate();return true;}}
更多相关文章
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- Android中dispatchDraw分析
- 锁屏界面
- android OpenGL ES2.0编程初学
- android和j2me之清屏(clearScreen)
- [置顶] android 图标的绘制
- android和j2me之清屏(clearScreen)
- Android绘制简单折线图的步骤
- android 虚拟摇杆绘制