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 }}
阅读全文
0 0
- Android画板开发(一) 基本画笔的实现
- android 画布,画笔,综合使用,可实现简单的画板
- android画笔的基本属性
- Android画板的实现
- 安卓简易画板,实现画笔,调色板,画基本形状,以及文件打开存储
- Android简单画板的实现
- android Paint画笔的基本使用
- Android画板开发(二) 橡皮擦实现
- Android 画笔演示功能的实现
- Android高级画笔效果实现的探索
- 【android开发】手写签名系统的设计与实现之实现画笔设置(四)
- 【android开发】手写签名系统的设计与实现之实现画笔设置(四)
- Android开发之画笔
- Android开发:一个简单的画板
- 【Android】android实现画板
- Android画板的实现及demo
- android基础画板的实现(surfaceView)
- 【android开发】手写签名系统的设计与实现之实现手写画板(三)
- angular环境安装
- leetcode 99. Recover Binary Search Tree
- 各排序时间复杂度
- 迷宫城堡(Tarjan)
- 调整服务器运行占用内存大的过程
- Android画板开发(一) 基本画笔的实现
- [agc005c]Tree Restoring
- Git最基本的一些命令
- 读《第一行代码》遇到问题6:拍照和显示图片遇到的问题
- 【spring boot + kotlin + jpa】DTO 转 Entity
- python笔记11
- 深度学习所需的python--学习笔记12
- 解决ScrollView嵌套RecyclerView导致滑动不流畅的问题
- windows 下 SVN禁止删除和强制注释操作的钩子脚本pre-commit