ScaleSketchPadDemo

此项目包含两个模块

app1 为普通绘画板

app2 为可所发的绘画板

方便各位Android 开发者理解和使用

用法:

clone or download 项目到本地,

打开Android Studio—>file—>new—>import new moudle—>选中本地的app或aap2

项目简介

普通绘画板

可缩放平移绘画板

效果图

事件图

uml图

普通绘画板

有五大功能:

普通绘画

在图片上绘画

改变画笔颜色

改变画笔粗细

撤销操作

添加图片

绘画功能

在图片上绘画

改变画笔颜色

改变画笔粗细

添加图片

绘画板原理:

注意: Pathview 没有绘制的能力,具备绘制能力的是PointPath

这张图说明了:事件传递的过程、处理事件的方式

基本知识:

View具有onTouchEvent(Motionevent event)函数,可以接收触摸事件

图,描述用户一次触摸滑动的过程,系统产生event的情况;打印log,画图无穷小的点

一次 touch event log:

action test: finger down

action test: finger move

action test: finger move

action test: finger move

action test: finger move

action test: finger move

action test: finger move

action test: finger move

action test: finger up

实现思路

PointPath 是实际具有绘画能力的类:

存储点的状态(橡皮、普通点、粗细、颜色)

接收Canvas进行绘制

PathView 是PointPath的控制类,继承自View:

接收Touch事件,并处理响应的event

存储每一条Path

onDraw()中调用PointPath类进行绘制

难点

View 的 onTouchEvent()

每接收到一个Event,都需要break结束判断

存储Point的时机——>Action_Move——>记得break结束判断流程

存储Path的时机——>Action_Up——>记得break结束判断流程

move和up结束前,都要invalidte

橡皮擦功能

Paint.setXformode()属性,本质就是同一个位置,两个点进行集合运算

onDraw()中需要新建临时canvas,临时Bitmap

可缩放的绘画板

app2 增加了缩放功能

双手缩放平移VS普通状态

缩放、平移原理

缩放功能设计

双手触摸屏幕缩放、平移操作,打印出的log(也就是系统反馈给开发者的触摸事件):

action test: finger down

action test: action_pointer_down

action test: action_move

action test: action_move

action test: action_move

action test: action_move

action test: action_move

action test: action_move

action test: action_up

插入图片:缩放图原理

基本知识

view 的缩放属性,平移属性

view.setscaleX()

view.setscaleY()

view.setX()

view.setY()

viewgroup和子view的事件传递

return true 即为消耗event

难点

计算缩放比例、控制缩放的大小,保证图片不越界

画板缩放之后,手势画出的线条发生偏移,计算平移值,对坐标点进行加减运算即可

子view和viewgroup的事件拦截

Android实现支持缩放平移图片

本文主要用到了以下知识点 Matrix GestureDetector 能够捕捉到长按.双击 ScaleGestureDetector 用于检测缩放的手势 自由的缩放 需求:当图片加载时,将图片在屏幕 ...

Android绘画板(普通绘画模式和缩放平移绘画模式)

ScaleSketchPadDemo 项目地址: demo apk体验下载 demo2 apk体验下载 用法: 进入项目根目录:https://github.com/ShaunSheep/ScaleS ...

Android 手势检测实战 打造支持缩放平移的图片预览效果(下)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...

2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)

标签: Android开发开源项目最火Android项目github 2015-2016最火的Android开源项目 本文整理与集结了近期github上使用最广泛最火热与最流行的开源项目,想要充电与提 ...

Android开源项目分类汇总

目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

59.Android开源项目及库 (转)

转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...

GitHub上史上最全的Android开源项目分类汇总 (转)

GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

GitHub上史上最全的Android开源项目分类汇总

今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...

Android 开源项目分类汇总(转)

Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...

随机推荐

iOS:GCD理解1(同步-异步、串行-并行)

1.并行-异步(ST1与ST2抢占资源) 1-1).获取 并行(全局)队列 ,DISPATCH_QUEUE_PRIORITY_DEFAULT 为默认优先级. dispatch_queue_t queu ...

transactionManager 以及datasource type解析

transactionManager 在 MyBatis 中有两种事务管理器类型(也就是 type=”[JDBC|MANAGED]”): JDBC – 这个配置直接简单使用了 JDBC 的提交和回滚设 ...

JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点

今天遇见这么一个小小的问题,就是文本框中需要输入内容才可以提交,如果没有输入就提示并使该文本框获得焦点! 这么一个简单的事情如果没有使用 jQuery的话 是不是对象.focus()就可以了, Jav ...

我如何调优SQL Server查询

我是个懒人,我只想干尽可能少的活.当我干活的时候我不想太多.是,你没看错,这看起来很糟糕,作为一个DBA这很不合格.但在今天的文章里,我想给你展示下,当你想对特定查询创建索引设计时,你如何把你的工作和 ...

POJ2001Shortest Prefixes(字典树)

题目大意就是帮你给N条字符串,每条长度不超过20.问要将他们单一识别出来,每个字符串最短可以缩为多短. 如: abc abcdefg bc adef 这四个字符串就可分别缩写为 abc abcd b ...

Qt5:不规则按钮的实现---通过贴图实现

在应用开发中,有时候为了美观会在UI界面中增加不规则的按钮 现在我们就来看看Qt中是怎么实现不规则按钮的 /// ...

网页html结构搭建方法总结

在div+css布局中,一般都这样来整体构架的:

移动开发必须要弄明白的问题】详解Eclipse转Android Studio

2015-12-09 13:01:244264浏览3评论 AS出来一年多了,最近才从Eclipse转到AS,但我并不觉得使用Eclipse有多落后,它们都只是一个工具而已,哪个顺手就用哪个,用得好都能 ...

jquery中this和event.target的区别

android 绘画开源,Android 开源可缩放平移的绘画板相关推荐

  1. Android 手势检测实战 打造支持缩放平移的图片预览效果(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...

  2. android绘画时钟,Android实现时钟特效

    本文实例为大家分享了Android实现时钟特效的具体代码,供大家参考,具体内容如下 效果展示: 功能介绍: 如果您想换一张背景图,可以点击左下角按按钮切换背景图片. 如果您不想看见右上方的日期,可以点 ...

  3. Android实现支持缩放平移图片

    本文主要用到了以下知识点 Matrix GestureDetector 能够捕捉到长按.双击 ScaleGestureDetector 用于检测缩放的手势 自由的缩放 需求:当图片加载时,将图片在屏幕 ...

  4. Android开源绘画板(普通绘画模式和可缩放模式)——秒学自定义View和触摸事件原理...

    ScaleSketchPadDemo 博客园原文链接 www.cnblogs.com/jincheng-ya- 此项目包含两个模块 app1 为普通绘画板 app2 为可所发的绘画板 方便各位Andr ...

  5. Java开源Android开源项目

    FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 更多FBRea ...

  6. Android github上优秀开源项目分类汇总

    第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...

  7. Android最牛的开源收集

    这是一个基本把github上所有优秀安卓的开源代码整理了,下面是都是转自https://github.com/Trinea/android-open-project,都是一些牛人,很有开源精神的达人做 ...

  8. Android最牛的开源整理

    这是一个基本把github上所有优秀安卓的开源代码整理了,下面是都是转自https://github.com/Trinea/android-open-project,都是一些牛人,很有开源精神的达人做 ...

  9. [转]Android github上优秀开源项目分类汇总

    第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.P ...

最新文章

  1. 实验二 164 张增进
  2. 转:58到家数据库30条军规解读
  3. Tomcat的Session管理(三)
  4. MAVLink 协议解析之XML定义篇
  5. SQLSERVER2005 收缩日志
  6. js 文件引用传递参数
  7. python怎么打开turtle_python的turtle库真好玩
  8. MySQL orzdba、dodba、top、iostat、vmstat、perf等
  9. Linux下的定时任务Cron
  10. PHP实现图片加文字/图案水印
  11. 组合数递推的计算方法 c语言,组合数公式的递推公式
  12. 交通信号灯控制器C语言代码,交通信号灯控制器代码及说明.doc
  13. 台式计算机VGA线可以拔掉吗,电脑开机花屏拔掉vga线在插入又会清晰
  14. helm 错误 Error: INSTALLATION FAILED: must either provide a name or specify --generate-name
  15. strongSwan之ipsec.secrets配置手册
  16. webstorm加载webpack
  17. 操作系统实验 生产者/消费者模型
  18. php中的 notice,php中对于NOTICE的问题排查,该注意什么?
  19. DP问题之01背包如此简单
  20. 付出与回报——伍迷“我的2007”随想 (转载 注 这个文章再次告诉我,做人要厚道,只要付出了,总有...

热门文章

  1. 【网络工程】广域网与接入网
  2. LeetCode 力扣 233. 数字 1 的个数 countDigitOne
  3. 早绑定,晚绑定和其实现
  4. 安徽大学计算机科学与技术考研科目,2019安徽大学计算机考研初试科目、参考书目、招生人数...
  5. jdom 组装xml以及解析xml
  6. vivo图像算法工程师双非研究生可以吗_2021 校招算法岗, 劝退还是继续
  7. 聊一聊直播利器,连麦直播背后的混流方案:到底该怎么混?
  8. iphone新旧手机数据传输已取消_iPhone新旧手机怎样互传备忘录便签里记的东西?...
  9. 配置终端下 Sublime 对应的 subl 命令
  10. Cesium创建火焰粒子