Android画板开发(一) 基本画笔的实现
Android画板开发(一) 基本画笔的实现
Android画板开发(二) 橡皮擦实现
Android画板开发(三) 撤销反撤销功能实现
Android画板开发(四) 添加背景和保存画板内容为图片
Android画板开发(五) 添加文本文字
一、简介
这是画板系列的第一篇,一步步开始,从简单的画板,到功能稍微齐全一点的画板,例如基本画笔、橡皮擦、背景、文字、撤销、反撤销、保存等
这篇带大家实现一个最简单的画板,前提是需要对自定义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.xpreY = event.y}MotionEvent.ACTION_MOVE -> { //手指移动的时候//绘制圆滑曲线,即贝塞尔曲线,贝塞尔曲线这个知识自行了解mPath.quadTo(preX,preY,event.x,event.y)preX = event.xpreY = event.y}}//重新绘制,会调用onDraw方法invalidate()return true}}
Android画板开发(一) 基本画笔的实现相关推荐
- Android画板开发(二) 橡皮擦实现
Android画板开发(一) 基本画笔的实现 Android画板开发(二) 橡皮擦实现 Android画板开发(三) 撤销反撤销功能实现 Android画板开发(四) 添加背景和保存画板内容为图片 A ...
- Android画板开发(四) 添加背景和保存画板内容为图片
Android画板开发(一) 基本画笔的实现 Android画板开发(二) 橡皮擦实现 Android画板开发(三) 撤销反撤销功能实现 Android画板开发(四) 添加背景和保存画板内容为图片 A ...
- Android游戏开发基础part3--Paint 画笔
游戏开发基础part3--Paint 画笔 Paint画笔是绘图的辅助类,一般它是作为画布的参数来实现相应的效果,Paint类中包含文字与位图的样式.颜色等属性信息.Paint的常用方法如下: 1.s ...
- android基础开发 书,Android 开发基础
(一)认识Android Studio Android Studio 是谷歌推出的一个Android集成开发工具,Android Studio 提供了集成的 Android 开发工具用于开发和调试. ...
- android画板需求分析,基于Android的画板的设计与实现论文.doc
基于Android的画板的设计与实现论文.doc 职场大变样社区( . zcdby. com):下载毕业设计成品全套资料,全部50元以下 毕业设计(论文)任务书 毕业设计(论文)题目: 基于Andro ...
- Android 自定义控件开发入门(一)
那么怎样来创建一个新的控件呢? 这得看需求是怎样的了. 1.需要在原生控件的基本功能上进行扩展,这个时候你只需要继承并对控件进行扩展.通过重写它的事件,onDraw ,但是始终都保持都父类方法的调用. ...
- android应用开发全程实录出版
这本书经历了大半年的时间,终于可以和读者见面了.书籍由我和微度网http://www.microdu.com/其他两位资深开发者共同完成. 最近经历了很多,应该是人生的一个转折点吧.总会有一些选择,将 ...
- Android游戏开发中绘制游戏触摸轨迹的曲线图
本篇文章主要来讲解怎样绘制游戏触摸轨迹的曲线图. 我们在onTouchEvent方法中,可以获取到触摸屏幕时手指触摸点的x.y坐标,如何用这些点形成一条无规则轨迹并把这条无规则轨迹曲线显示在屏幕上就是 ...
- android落下动画,Android应用开发android 购物车小球掉落动画
本文将带你了解Android应用开发android 购物车小球掉落动画,希望本文对大家学Android有所帮助. 先贴效果图 对自定义View小红球的绘制 public class BallView ...
最新文章
- Python是不是被严重高估了(转载)
- docker部署elasticsearch-+-Kibana(6-8)-+-SpringBoot-2-1-6
- 来伊份与第四范式宣布战略合作 携手打造智慧零售新范本
- 四、学编程语言前,不了解Git,怎么入坑
- P3690-[模板]Link Cut Tree(动态树)【Splay】
- 利用树的先序和后序遍历打印os中的目录树
- 科来数据包生成器找不到网卡_CPU:网卡老哥,你到底怎么工作的?
- golang中package的4种导入方式
- 人生是什么?——感悟2:绝望时候要相信自己
- ROS入门 Client Library与roscpp
- JavaScript事件与处理程序绑定(1)
- 高性能Mysql中文版
- 分享第三方支付申请流程政策
- 台式计算机网线接口松动怎么办,台式电脑网卡坏了怎么修复(图文)
- 云服务器aip,云服务器API接口-云服务器的使用
- CentOS7.5安装oracle11g
- [Android]APP中保持屏幕不自动灭屏的一种方法
- QT中文字体的显示方法
- 教大家如何利用电脑发射wifi信号 供其他设备免费高速上网!
- web 移动端 微信分享(nativeShare)