• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android 涂鸦最佳实践

Android 涂鸦最佳实践

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android 涂鸦,android涂鸦源码,android 涂鸦撤销,android涂鸦功能,android 图片涂鸦等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android 涂鸦最佳实践


Android中实现手势画图一般都两种方式,一是直接在View上绘制,而是使用SurfaceView。

两者还是有一些差别的。简介下。

View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面。速度较慢。 SurfaceView:基于view视图进行拓展的视图类。更适合2D游戏的开发;是view的子类,使用双缓机制。在新的线程中更新画面所以刷新界面速度比view快。所以呢,要实现涂鸦的功能优先选择后者。

在開始码代码之前,先简单理下要实现的功能。

1、能够自己定义画笔的颜色

2、能够自己定义画笔的粗细

3、能够实现各种常见形状的绘制

4、同意画布的回退,就是回到上一步

5、要支持橡皮擦功能

6、已作完的画,要支持保存

以下我们就逐步去实现这五个功能点。

一、关于自己定义画笔的颜色和粗细。这个最简单,仅仅须调用Paint的setColor(int color)和setStrokeWidth(float width)这两个方法就可以。须要基本的是,使用SurfaceView画图须要注意是通过SurfaceHolder获得Canvas实例,这时能够通过Canvas实例去画图,绘制结束调用unlockCanvasAndPost(canvas)去提交改变。

二、支持自由曲线、直线、矩形、圆形、实心矩形、实心圆形,非常方便的进行扩展。

这里先抽象出一个基类Action,每一次的绘制都是一个action实例,我们的画板就是一个action的列表。这样就能非常好的支持回退功能。

三、画布的回退。假设画布上的action列表大小不为0,表示画布眼下是支持回退的,仅仅须把列表中最后一个action给remove掉,又一次绘制就OK了

四、橡皮擦。这里我取了个巧。画布的背景是白色的。所以橡皮擦的实现也是一个action,形状为自由曲线,颜色也为白色,这样就营造了一种被擦除的效果。事实上仅仅是被白色的曲线给遮盖住了。

依照第三点的实现,橡皮擦也支持回退。

五、保存画板。画布上画满了你的各种图形,最后一步就是保存了,可是View和SurfaceView的截取是不同的,View是静态的被动的,SurfaceView是主动的动态的,假设使用View的截图方法仅仅能得到一个黑屏。

这时好办法就是把咱们保存的action列表又一次绘制出来。代码例如以下

</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android 涂鸦最佳实践

相关文章

  • 2017-05-26androidj基础:从网上下载图片,
  • 2017-05-26认识一下Kotlin语言 Android平台的Swift
  • 2017-05-26VS2015墙内创建ionic2 【利用nrm更换源,完美!】,vs2015ionic2
  • 2017-05-26【同行说技术】Android程序员从小白到大神必读资料汇总(三),android资料汇总
  • 2017-05-26【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试,buglykotlin
  • 2017-05-26MirrorNetwork 基于jmdns和netty的android网络通信开源库,mirrornetworkjmdns
  • 2017-05-26Android中的 Multiple dex files define 编译错误引发的思考
  • 2017-05-26android shareSDK实现第三方分享,androidsharesdk
  • 2017-05-26读《重构手册》-重构之姊妹篇有感,《重构手册》姊妹篇
  • 2017-05-26Kerberos简介

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android Native crash日志分析,androidcrash
    • Swift开发iOS应用(1)列表的实现
    • Android UI:ListView,androiduilistview
    • [AndroidAnnotations框架]AndroidAnnotations的配置介绍
    • Android-BroadcastReceiver详解
    • 关于 android canvas 的简单总结
    • 【lushengduan】01、搭建安卓App开发环境 编写程序HelloWorld,lushengduan安卓
    • Android中使用SDcard进行文件的读取,androidsdcard
    • Android中EditText设置输入条件,androidedittext
    • Android深入四大组件(一)应用程序启动过程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有