Android画板开发(一) 基本画笔的实现

来源:互联网 发布:广电网络怎么连接电视 编辑:程序博客网 时间:2024/05/17 06:48

一、简介

这是画板系列的第一篇,一步步开始,从简单的画板,到功能稍微齐全一点的画板,例如基本画笔、橡皮擦、背景、文字、撤销、反撤销、保存等

这篇带大家实现一个最简单的画板,前提是需要对自定义View有一定的了解。

用的是kotlin语言

这里写图片描述

二、实现

分析如何实现: 定义了画笔和Path,然后在触摸屏幕的时候,手指一边移动一边进行path的滑动,绘制。这就完成了一个最简单的画笔功能。

下面几十行代码完成这个

 class TPView(context: Context,attr:AttributeSet ) : View(context,attr) {    private var preX: Float = 0.0f //上一次的触摸点x坐标    private var preY: Float = 0.0f //上一次触摸点y坐标    var mPath = Path()   //path路径    //画笔    private var mPaint = Paint(Paint.ANTI_ALIAS_FLAG or Paint.DITHER_FLAG)    init {        //画笔为实心        mPaint.style = Paint.Style.STROKE        //颜色        mPaint.color = Color.RED        //笔触为圆形        mPaint.strokeCap = Paint.Cap.ROUND        //画笔大小        mPaint.strokeWidth = 10f        //View的背景颜色        setBackgroundColor(Color.WHITE)    }    override fun onDraw(canvas: Canvas) {        super.onDraw(canvas)        //画线        canvas.drawPath(mPath,mPaint)    }    override fun onTouchEvent(event: MotionEvent): Boolean {        when(event.action){            MotionEvent.ACTION_DOWN -> {  //手指按下的时候                //将起始点移动到当前坐标                mPath.moveTo(event.x,event.y)                //记录上次触摸的坐标,注意ACTION_DOWN方法只会执行一次                preX = event.x                preY = event.y            }            MotionEvent.ACTION_MOVE -> {  //手指移动的时候                //绘制圆滑曲线,即贝塞尔曲线,贝塞尔曲线这个知识自行了解                mPath.quadTo(preX,preY,event.x,event.y)                preX = event.x                preY = event.y            }        }        //重新绘制,会调用onDraw方法        invalidate()        return true    }}