Android Studio 实现的画板App

基于Android Studio 实现的画板App

** 1.实现目标**
随着科技的不断发展和社会的不断进步,手机越来越流行,成为了人们日常生活和学习的必要工具,人们越来越离不开手机,还在几年前手机仅仅是一个打电话和发短信的工具,但在地球村的今天,手机无论除了可以满足基木的通讯作用以外,还成为了人们办公和娱乐的必不可少的工具。当然手机画板也成为了手机的一个基木的app软件,以前人们想画画必须在纸上或者自己携带的画板上,对于现在人们快节奏的生活不是非常方便。而手机画板的出现打破了这个固有的僵局,它可以满足人们急性绘画的需求,方便而快捷,并且画板可以给用户留下创造空间 能够更加灵活的设计出自己想要绘制的图形。随着现在智能手机的不断发展,手机画板的模式也越来越多样化,不同的手机有不同的画板模式,有的是靠重力感应,只需要使用者摇晃手机即可绘画,大部分软件还是需要手或者画笔去操作。现在绝大多数手机自带的画板都是对所有人公开的,我所设计和实现的手机画板具有登入和注册的功能,以及个人画板中心等基本页面,未来可以满足人们对于隐私的要求。
2.功能分析
根据近几年来调查报告, 我发现人们使用手机画板的次数越来越多,手机画板的出现可以说极大的方便了人们的生活。在你心情好的时候可以拿出手机打开手机画板,画出自己美丽的心情,可以将此时此刻的情景用画的形式记录下来,闲暇时光看- -看也是很不错一件事情。当然在你心情非常不美丽的时候也可以拿出手机,打开手机画板,将自己的不美好的情绪全部发泄在手机画板上,想画什么就画什么,此时画板就成为了陪你度过不美好时光的忠实伙伴。于是我针对这一想法,设计和实现了具有登录界面和注册界面的手机画板APP。[4]
基于此想法,本设计的功能模块主要分为以下几个:
1.画笔画图选中颜色模块。默认选择黑色画笔,通过颜色板进行切换,通过触屏滑动完成图片的绘制。
2.橡皮擦除模块。通过绘制透明画笔进行覆盖来达到擦除的目的。
3.画板清空模块。将其画板位图进行重绘,清空画布。
4.撤销模块。保存其画笔路径,撤销时删除上一步操作,调用重绘来实现。
5.保存绘图模块。先在本地的文件夹上创建一个文件 默认创建的是/sdcard/Pictures/由于文件的名字是不能重复的,采用通过当前时间来命名yyyy_MM_dd_HH_mm_ss.png 格式。然后将图片进行拷贝。
3.界面设计
首页:第一个界面为注册登录界面。为后面程序完善留下接口,分为用户名和密码两个部分用户名支持英文和中文,密码为8-16位英文数字混合为期控件使用水平和垂直布局进行约束。同时为控件选择了一个背景图。
画板页:此界面应该尽量的简洁明了,突出重点,将画笔橡皮保存清屏撤销键设置为灰色背景图,将画板默认为白色画布,默认使用黑色画笔,将颜色切换至于布局的右侧方便用户的点击。在画板的上面空行栏进行显示用户的信息,后期扩展可以设计点击切换个人信息页面 。
4.程序设计
程序设计主要包括两部分:XML 文件设计和 MainActivity 的设计。其 中 XML 文件中是局部文件的设计,需要细致的修改,最终达到格式上的 统一和显示的美观。MainActivity 的设计是将组件进行实例化,从而实现 APP 设计的功能。 整体的程序设计是总分式的结构,先进性主页面的设计,然后分别进 行每一个子界面的程序,每一个界面的程序设计本着从功能出发的原则。基本思路主要有以下几点: 首先,进行全局变量的定义,然后将 XML 文件中的组件和变量之间 进行连接。XML 文件进行页面布局的时候通过添加组件完成相关的效果, 本设计中有 TextView、EditView、ImageView、button 等组件实现画板功能呈现。 其次,在 MainActivity 中进行功能实体的设计,完成程序设计的基本 目的。功能实体就是如何实现设计目的,在本设计中需要实现 用户登录、画图、擦除、清空、改变颜色、撤销、保存。因此在主函数应该一一实现。 当用户有了新的动作后可以及时的响应,为了发挥用户的想象空间,本设计的界面采用的色彩比较鲜艳,配图也是比较活的。
后期扩展优化的方向为两点:
1.增加服务器 将保存的图片上传至服务器云空间中 避免图片在本地丢失。同时减少客户端的磁盘空间占用。在客户端增加扩展功能:设置圆形 三角形 长方形 喷漆等其他模块。
2.基于当前客户端 完成一个你画我猜的小游戏,将玩家客户端 加入到一个房间中 以轮询的方式进行一人画图 其余玩家猜答案。(可以采取积分制进行排名)。
整个程序编写的基本思路如下图所示:
在这里插入图片描述
程序设计流程图
5.执行流程
第一步,刚开始点击app 进入的第一个界面为登录注册界面,使用了水平布局和垂直布局相结合。如图:
在这里插入图片描述
通过点击登录(重写点击函数)实现页面跳转并且将用户名传递给 画板界面用来显示。这里使用intent,intent是Android程序中各组件之间进行交互的一种重要方式,一般被用来启动活动 intent在启动Activity的时候可以传递数据。通过intent中提供的putExtra()方法 , 把要传递的用户名暂存在intent中,当画板活动启动后,再把这些数据从intent缓存中取出显示到对应控件上。[5]
第二步,当我们点击登录的时候进行跳转下一个画板界面 ,上面是一个 textview用来显示用户名。默认是画笔状态,画笔宽度,默认10个像素点。
通过点击橡皮擦实现绘制图形的擦除。如图:
在这里插入图片描述
使用的是 Paint这个类开始对画笔进行初始化设置 。手机屏幕事件的处理方法用的onTouchEvent然后绑定监听 事件屏幕按下记录坐标位置屏幕移动,绘制图形(重绘),更新坐标。屏幕抬起,保存路径。画笔和擦除实现功能类似一个是带颜色的笔一个一个是透明的颜色用来擦除覆盖从而实现橡皮擦的功能。
第三步,实现四种颜色的切换,画板的清空与重新绘制。如图:
在这里插入图片描述
每个颜色块都是一个ImageView 通过监听onclick来设置paint中画笔的颜色 。画板清除会出现一个message的提示框 点击确定需要将保存的路径清空将位图变成透明色调用重绘。
第四步,通过撤销返回上一步 ,然后点击保存图片到本地的文件夹。 如图:
在这里插入图片描述
每画一笔的时候都要保存其路径 用链表来存放,通过触发撤销事件将链表头的路径删除掉,将下一个头作为新的路径头 然后调用重绘。保存图片 需要先在本地的文件夹上创建一个文件 默认创建的是/sdcard/Pictures/由于文件的名字是不能重复的,采用通过当前时间来命名yyyy_MM_dd_HH_mm_ss.png 格式。然后将图片进行拷贝。
6.测试
2.6.1功能正确性测试
功能性测试是指通过系列测试从而查看系统是否完成了用户的需求,是否能够顺畅的运行,各种流程可以跑通。通过多次测试,注册、登录、擦除画板、新建画板、退出登录和保存画板等都能够正常的,没有Bug。
2.6.2界面易用性测试
易理解性:界面简单美观,易理解性强。易学习性:界面简单,流程简单,学习起来比较轻松。易操作性:每一个人都可以轻松的进行操作,操作简单,没有什么比价难操作的地方。
2.6.3兼容性测试
通过使用5种不同的Android手机进行测试,程序能够正常的运行,没有Bug,运行很流畅,兼容性强。
结果及分析
经过测试和完善完成基本的画图,擦除,清空,改变颜色,撤销,保存功能。登录页面是在网络中查找的资源图片作为登录的页面背景,当用户点击登录按键时可以进入。画板页面,开始默认画笔状态,10个像素点。点击颜色切换进行改变,根据用户自己喜欢的颜色进行绘制。扩展性很强。通过擦除功能进行错误的更改,如果不想要的话可以进行撤销操作,当想要重新创建一个画板的时候,点击清空即可,对于自己绘制的比较满意的图片可以进行相应的保存,保存到本地文件夹中。当用户点击退出时,即完成程序的正常使用。执行过程与,理论功能设计基本一致。
总结
随着 APP 应用开发在智能终端系统中也越来越普及,我所设计和实现的基于Android Studio的画板APP。在写的过程中遇到很多问题本来以为画板真的挺简单的,但真正做起来发现真的很难,与我自己想象的完全不一样。首先为了用户有很好的用户体验,界面的修改就花费了很多的时间。因为我知道一个良好的UI界面在一个App中所在的重要位置。在整个App的设计和实现的过程中也遇到了很多的难题,很多的困惑,最大的一个困惑就是当用户绘制完阁形保存的时候应该往哪里保存,往哪里保存比较好,这个问题困扰了我很久很久,一直不知道如何解决,刚刚开始觉得应该建立一个数据库,专门存储每个用户所作的画,不同的用户在的登人之后要先在相应的数据厍中拿到自己以前绘制的阁形放在我的画廊界面。但后来在建立相应的数据库中又出现了很大的问题,于是我向我老师和同学发起求助的信号,得到了很多种响应,后来将图片存储在本地文件夹中,然后以当前时间进行文件的命名。就不会造成因为文件的额名字一样而使图片文件进行覆盖。
APP的功能基本上实现了,但还有很大的进步空间,比如界面的优化和系统功能的添加等都还可以做得更好。所以在以后的生活和工作中我也会不断的丰富APP的功能,不断的美化APP的界面,使它成为一款完美的APP 总之,无论如何自己亲自完成了一款简单的APP,收获真的很多。无论是自学能力和逻辑能力,都有了很大程度的提高。这可以说是一次非常不错的经历,很庆幸自己可以有这么一次机会。
参考链接:https://www.jianshu.com/p/9552ac7679e9

画板APP
链接:https://pan.baidu.com/s/1G5wdcPC91qLnMSZOW2JuxQ
提取码:n95u

猜你喜欢

转载自blog.csdn.net/m0_46717588/article/details/118149633