android小画家画画软件毕业设计

上传人:1666****666 文档编号:37779959 上传时间:2021-11-04 格式:DOC 页数:36 大小:2.20MB
收藏 版权申诉 举报 下载
android小画家画画软件毕业设计_第1页
第1页 / 共36页
android小画家画画软件毕业设计_第2页
第2页 / 共36页
android小画家画画软件毕业设计_第3页
第3页 / 共36页
资源描述:

《android小画家画画软件毕业设计》由会员分享,可在线阅读,更多相关《android小画家画画软件毕业设计(36页珍藏版)》请在装配图网上搜索。

1、毕业设计设计题目: 系 别: 专业班级: 指导老师: 学生姓名: 2013年5月18日- 33 -四川工商职业技术学院摘要:在21世纪的今天,手机几乎是每个人的必备品,特别是在高校的学生,不管是吃饭、睡觉、还是上课,手机总是不离手。而且手机更新换代更是日新月异,然后在现在的手机市场中android系统的智能机成为主流。我们这款画画小软件正是在android系统的平台上进行运行。在日常生活中,我们画画只能在纸上的时代已经过去,这款android小画家画画软件,可以进行简单的简笔画操作、上色。既节约了增加了我们平时的乐趣,也节约了资源。该软件具有改变画图的形状、改变画笔的颜色、改变画刷的宽度、改变

2、画画的风格、以及保存、清除等功能。经过测试,这是一款能为我们生活增加乐趣的软件。关键字:手机;android;画画软件目录第一章 引言- 1 -1.1发展情况- 1 -1.2研究现状- 1 -1.3研究前景展望- 1 -1.4选题的目的及意义- 2 -第二章 系统可行性分析- 3 -2.1经济可行性分析- 3 -2.2操作可行性分析- 3 -2.3技术可行性分析- 3 -2.3.1 eclipse概述- 3 -2.3.2 ADT 概述- 4 -2.3.3 android SDK概述- 4 -2.3.4 java概述- 5 -第三章 需求分析- 6 -3.1软件功能描述- 6 -3.2系统功能分

3、析- 7 -3.3软件需求分析- 9 -3.4软件概念结构设计- 9 -第四章 软件详细设计- 12 -4.1软件设计原理- 12 -4.2软件模块设计- 12 -第五章 软件测试- 30 -总结- 31 -参考文献- 32 -致谢- 33 -四川工商职业技术学院第一章 引言1.1发展情况 在现在这个手机普及的时代,各种手机软件也是层出不穷,尤其是在这两年的飞速发展,android软件可以是说席卷各大手机软件网站,为android软件开发者既带来了收入的回报,也提出了技术的挑战。android系统这个平台以成为智能手机系统的核心,也是IT技术行业、智能手机制造行业高度重视的。随着android

4、系统的不断更新,现在功能各方面已经非常强大,这不仅是一台手机这么简单,而是一个移动终端。各种软件都有几乎都有android系统的版本。同时用户现在不仅要求手机有传统手机的功能,现在必须更加具有娱乐性以及休闲性。抓住现在用户的这个心理状态,于是android平台上运行的小画家画画软件就运营而生了。1.2研究现状就目前的android系统智能手机在市场的占有率来看,对android系统手机软件的开发具有非常广阔的前景。虽然在IT行业中都处于一个饱和的状态,但是在android系统手机软件开发这一方面又处于紧缺的状态,因为现在的手机用户拿起手机不仅仅是只用来打打电话,发发短信这么简单,用户更加追求的

5、是手机的娱乐性和休闲性。说的更加简单明了一点就是,用户在无聊的时候可以用手机来消遣时间。android系统自2009年2月发布的android1.1开始已经有4年的发展历史。然而在这短短四年时间就可以成为智能手机市场的领头羊,那么对于我们开发android系统手机的软件,也是同样具有广阔的市场。1.3研究前景展望随着android系统智能手机的诞生,android系统打破了前些年智能手机的垄断的传统市场。同时android系统的手机软件占据的手机软件市场的比例越来越大,那么我们开发的画画涂鸦软件是基于android系统的,可以说是具有广阔的发展前景。而且现在用户对手机软件是否具有娱乐性有非常强

6、的选择性,用户对于空闲时间的消遣,还有即时聊天需要发送一个手绘涂鸦图片的需要,那么对我们这款软件的选择是非常有用的。对于小画家手机软件具有一下优点:(1)喜爱画画的用于,无论是在车上,还是站台等车,都可以随时随地的进行简笔画画画的操作。(2)可以将画好的图片保存通过即时聊天工具发给好朋友分享自己的作品。(3)在手机上画可以节约资源,在环保的角度,起到节能减排的效果。1.4选题的目的及意义为了巩固在大学三年所学的知识,达到学以并用的目的,作为四川工商职业技术学院信息工程系软件班大三的毕业生,希望在离开自己母校的时候能够把自己所学的知识能够做一次全面的巩固和提高,我的选题意义如下:随着androi

7、d系统的不断升级,android系统智能手机的各种软件对各方面的影响越来越大,并且android系统成为以后移动智能客户终端的可能性同时也越来越大,那么未来android系统主导智能手机市场也是必然的发展趋势。那么我们开发的这款画画小软件也是顺应时代发展的潮流,在传统的按键手机,我们不能做出这个灵活的画画涂鸦软件,现在我们借助android系统这个平台来实现了这一功能。这样不仅提高图片的趣味性;建立生动有趣的图片处理平台,而且还提高手机的利用率。何乐而不为呢。第二章 系统可行性分析可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的目的不是解决问题,而是确定问题

8、是否值得去解决。可行性研究就是进行一次大大压缩简化了的系统分析和软件设计过程,也就是在较高层上以抽象的方式进行系统分析和软件设计过程。2.1经济可行性分析 在android系统各种手机软件频频被开发出来的今天,那些软件开放团队如何进行软件的开发,以及开发出来的软件有什么特色来吸引用户,是越来越重要的问题。而我们这个小软件内容简单,开发周期短,投资小。投入运营后,提供免费下载,然后在软件中植入广告成分,来获取利润。所以该软件为开发团队所带来的经济效益会远远高于前期投入的资金。2.2操作可行性分析本软件的开发工具是eclipse-SDK-4.2.1版本,eclipse内装插件ADT-21.0.0版

9、本以及android SDK 2.3.3。前端开发工具是java。这样的eclipse就是一套完整的开发工具,用于生成后缀为apk的应用程序。之后将生成的apk应用程序安装到手机就可以使用了。2.3技术可行性分析2.3.1 eclipse概述eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。我们经常将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目

10、标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给软件开发人员提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。2.3.2 ADT 概述Android开发工具(ADT),作为Eclipse工具插件,让其支持Android快速入门和便捷开发,可通过Eclipse启动菜单(启动Eclipse后,选择Hel

11、p-Install New Software)安装。ADT开发工具,包括Android Dalvik Debug Moniter Server(Android DDMS)和Android Development Tools(ADT),还有Hierarchy Viewer和TraceView两个查看器,看名称就知道功能了。DDMS可以提供调试设备时为设备截屏,查看线程及内存信息、Logcat、广播信息、模拟呼叫、接收短消息、文件查看器等功能(该功能在安装完ADT之后,点击Eclipse工具栏右上角的那个带箭头的小窗口图标弹出菜单中打开)。 Android Development Tools(AD

12、T)工具应该是为Eclipse支持Android项目快速编程开发和调试插件而已。2.3.3 android SDK概述SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的是Android专属的软件开发工具包。下载好Android SDK后,开始安装,Android SDK采用了Java语言,所以需要先安装JDK 5.0及以上版本。直接下载jdk安装文件安装更为方便。Android SDK不用直接安装,下载后,直接解压即可, 将下载后的SDK的

13、压缩包解压到适当的位置,就这么简单;SDK安装OK。2.3.4 java概述Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。第三章 需求分析本设计为android系统手机上的一个画画小软件

14、,该软件主要是在eclipse开发工具上用java语言编写的一个结果。eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。而java语言具有卓越的通用性、高效性、平台移植性和安全性。Eclipse编辑器引入了编辑环境方面的一些增强功能,诸如单词补齐,增量搜索,代码凸显,缩进文本,标记行号,彩色打印,和快捷方式。eclipse编辑器还提供了许多为特定语言设计的功能,比如在你输入原型和函数调用的时候它能够自动完成这些字符串的输入。生成的应用程序安装到手机后,直接点击打开,操作简单明了,软件具有形状的选择、画笔宽度的

15、调整、画笔颜色的改变、绘画风格的改变、整屏清除以及保存等功能。3.1软件功能描述小画家画画软件主要是提供给使用android系统智能手机的用户,增加业余时间的趣味性。本软件主要有简笔画画、上色、保存等功能。(1) 形状选择,打开软件,选择菜单键,就会弹出菜单里面的功能,选择形状功能就可以自由的选择需要的形状,形状有轨迹线、直线、矩形、椭圆形、圆形、点、还有橡皮擦等不同的形状。(2) 清除,打开软件,选择菜单键,就会弹出菜单里面的功能,清除功能就是将所绘制的整张画布全部清除。(3) 保存,打开软件,选择菜单键,就会弹出菜单里面的功能,如果绘画好一张满意的画,选择保存就可以将图保存在手机里面,以供

16、自己以后欣赏或者与朋友分享。(4) 设置,打开软件,选择菜单键,就会弹出菜单里面的功能,选择设置,就可以进入到设置画面,设置里面有画刷宽度的调节、画笔颜色的选择、画画风格的选择、是否是全屏模式、目前所使用的版本、以及可以看到最后调试的时间与快捷键和对开发者的建议。3.2系统功能分析根据软件的使用情况和面向对象,本软件具备一下功能模块以及操作方式:功能功能类别子功能用户管理模块setDrawing设置形状clearCanvas清屏saveToSdcard保存SettingsActivity设置颜色管理模块(color)ColorPickerDialog颜色选择画刷大小管理模块(size)Brus

17、h设置画刷大小菜单用户模块功能描述用户进入软件并选择操作操作序列1,点击“形状”选择要形状,默认轨迹线。2,点击“清除”抹掉整张画布的所有线条。3,点击“保存”保存当前的所画的画。4,点击“设置”进入更多的设置画面。形状形状管理模块功能描述用户选择图形形状操作序列1, 点击menu按钮,屏幕下方显示菜单。2, 点击“形状”进入形状设置。3, 选择需要的形状就可以了。清除清除管理模块功能描述用户需要清除整个画布操作序列1, 点击menu按钮,屏幕下方显示菜单。2, 点击“清除”就把整张画布清除了。保存保存管理模块功能描述用户需要保存所画的画操作序列3, 点击menu按钮,屏幕下方显示菜单。4,

18、点击“保存”就将所画的画保存下来了。颜色颜色管理模块功能描述用户选择画刷颜色操作序列1, 点击menu按钮,屏幕下方显示菜单。2, 点击“设置”进入设置画面。3, 点击“颜色”就可以选择自己喜欢的颜色了。画刷大小画刷大小管理模块功能描述用户选择画刷的大小操作序列1, 点击menu按钮,屏幕下方显示菜单。2, 点击“设置”进入设置画面。3, 点击“画刷宽度”就可以设置合适的画刷宽度了。风格画画风格管理模块功能描述用户选择画画的风格操作序列1, 点击menu按钮,屏幕下方显示菜单。2, 点击“设置”进入设置画面。3, 点击“风格”就可以设置画画的风格了。模式画图模式管理模块功能描述用户选择画图的模

19、式操作序列1, 点击menu按钮,屏幕下方显示菜单。2, 点击“设置”进入设置画面。3, 点击“全屏模式”就可以设置画图的模式了。3.3软件需求分析随着社会的发展,时代的进步,人们对生活品质的不断提高,对生活的享受心理也越来越强,越来越注重休闲娱乐。只有抓住现在人们的心理需要才能在现在有得一席之地。同样在手机软件方面也是一样的,现在的大多数人的手机里面占据一大部分内存的都是休闲娱乐的游戏,就是在无聊的时候打发时间的。而我们这款android小画家画图软件就是提供给那些爱画简笔画的画图爱好者,所以,既然现在有这个需求,我们就可以满足用户的这个需要,开发这么一款画图的软件。3.4软件概念结构设计这

20、一设计阶段是在需求分析的基础上而进行的,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑设计打下基础。概念结构的主要特点是:(1) 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对软件功能的要求。(2) 易于理解,从而可以用它和不熟悉使用手机的用户交换意见,用户的积极参与是软件开发设计成功的关键。(3) 易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。软件开发在小画家软件开发中存在系统用例、开发人员与用户、数据流程处理、数据表述等几个对象的关系,具体描述如下面各图所示。用户管理开发维护后台数据维护软件更新开发人员系统用例图用户小画家软件开发人

21、员用户信息软件下载软件信息用户情况软件升级建议反馈总体流程图软件管理用户软件信息软件信息软件下载条件 软件情况开发人员下载信息软件信息软件信息下载条件软件信息表用户下载信息表用户下载情况用户信息下载量信息软件信息下载信息下载量信息下载管理用户管理下载量信息用户信息开发人员用户信息 用户信息下载量信息用户管理表数据流图处理图下载情况软件卸载信息表软件信息表用户信息表开发团信息表下载信息表用户排行表数据表述E-R图 第四章 软件详细设计4.1软件设计原理本软件基于android系统智能手机,在android系统设备上运行,就像打开手机播放器一样简单打开软件就可以操作。它是随着android系统手机

22、的兴起,借助android系统平台开发的一个软件。主要是利用不断成熟的android系统,结合java语言与XML而产生的软件。Java 语言具有卓越的通用性、高效性、平台移植性和安全性,而可扩展标记语言XML是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。这样开发的软件不仅在界面上比较美观,而且可以在android系统平台上稳定运行。4.2软件模块设计打开软件即可进入到画画操作界面,也可以选择各种各样的功能,利用目前有的功能可以随心所欲的画出想要的简笔画,在选择各种各样的功能的时候也有界面的跳转弹出和菜单功能的选择。

23、因为现在是测试版本,不存在与互联网连接的情况,这样对用户的私人隐私也具有绝对的安全保密,因为只是一款画图的软件,所以我们不会访问用户的手机联系人、短信、以及地理位置信息,同时也不需要获得手机的任何权限,只是能够运行和使用就可以了,这样给开发团队的建议也只能发在开发团队的邮箱中。下面是软件各种界面的截图以及部分代码。打开软件,就如同打开音乐播放器一样简单,打开之后,就进入软件的主界面,这就是一张画布,可以在上面随意画自己喜欢的线条。这是软件最基本,也是最重要的部分,在软件中首先要创建这样一个activity,才能展开其他的功能。首先要在手机界面创建一个这样的画布,这是我们最重要的起步,创建一个界

24、面activity,才能进行下一步的操作,用public公有类,因为主要是主界面activity涉及的其他很多方法的访问,设置各种功能方法的类型、初始值。就如下所示,/* *主要视图类 */public class PaintPad extends Viewfloat tempX, tempY;private Bitmap bitmap = null;private Canvas paper = null;boolean isMoving = false;Drawing drawing = null;int bgcolor;Context context;然后添加不同的功能以及设置用setDr

25、awing方法,设置绘画背景色的状态为初始默认状态、绘画形状的当前状态参数为默认空、屏幕上此时的信息为默认初始状态。/* *设置绘画形状 * param drawing * 当前绘画形状参数 */public void setDrawing(Drawing drawing)this.drawing = drawing;public PaintPad(Context context)super(context);this.context = context;/获取屏幕上的信息ScreenInfo screenInfo = new ScreenInfo(Activity) context);/*创

26、建和屏幕大小的位图 */bitmap = Bitmap.createBitmap(screenInfo.getWidthPixels(),screenInfo.getHeightPixels(), Bitmap.Config.ARGB_8888);paper = new Canvas(this.bitmap);/设置背景颜色paper.drawColor(getResources().getColor(R.color.color_default_bg);this.isMoving = false;手指在屏幕上触动的时候,用private 私人方法fingerMove,会记录下所运动的轨迹或者方

27、法所规定的形状,处理手指的动作,这是让手指在画布activity的界面处理手指所留下的坐标,将所有坐标的点组成的线就是所画出来的图形。private void reDraw()invalidate();/* * 处理手指的动作。 * param x * X坐标 * param y * Y坐标 */private void fingerUp(float x, float y)this.tempX = 0;this.tempY = 0;drawing.fingerUp(x, y, paper);this.isMoving = false;/* * 处理手指的动作 * param x * param

28、 y */private void fingerMove(float x, float y)this.tempX = x;this.tempY = y;this.isMoving = true;drawing.fingerMove(x, y, paper);/* * 处理手指的动作 * param x * param y */private void fingerDown(float x, float y)this.isMoving = false;drawing.fingerDown(x, y, paper);如果处理好一张图,需要保存,调用公用public方法saveBitmap,对画好的

29、图进行保存,这个时候,软件会检测是否有保存的介质存在,如果不存在,就保存不了,有可能还会引起软件的崩溃;如果检测到存在保存介质,编辑图片名字进行保存就可以,如果没有名字,软件默认给一个名字,进行保存。 /* *检查SD卡是否可用 */public void saveBitmap()String state = Environment.getExternalStorageState();if (Environment.MEDIA_MOUNTED.equals(state)saveToSdcard();else if (Environment.MEDIA_MOUNTED_READ_ONLY.equ

30、als(state)Toast.makeText(this.context,getResources().getString(R.string.tip_sdcard_is_read_only),Toast.LENGTH_LONG).show();elseToast.makeText(this.context,getResources().getString(R.string.tip_sdcard_is_not_available),Toast.LENGTH_LONG).show();public void changeBgColor(int color)this.paper.drawColor

31、(color);this.reDraw();当检查到储存介质是存在的,即私人的private 方法saveToSdcard来执行,在SD卡中创建属于软件的保存文件夹,访问路径由“/”符号来分开,保存时间为系统时间,保存的图片格式为.png格式,最后就是将图片进行储存。/* * 保存位图在SD卡上 */private void saveToSdcard()File sdcard_path = Environment.getExternalStorageDirectory();String myFloder = getResources().getString(R.string.folder_na

32、me_in_sdcard);File paintpad = new File(sdcard_path + / + myFloder + /);tryif (!paintpad.exists()paintpad.mkdirs();catch (Exception e)e.printStackTrace();String timeStamp = (DateFormat.format(yyyy.MM.dd.hh.mm.ss,new java.util.Date().toString();String suffixName = .png;String fullPath = ;fullPath = sd

33、card_path + / + myFloder + / + timeStamp + suffixName;tryToast.makeText(this.context,getResources().getString(R.string.tip_save_to) + fullPath,Toast.LENGTH_LONG).show();press(Bitmap.CompressFormat.PNG, 100,new FileOutputStream(fullPath);catch (FileNotFoundException e)Toast.makeText(this.context,getR

34、esources().getString(R.string.tip_sava_failed)+ fullPath, Toast.LENGTH_LONG).show();e.printStackTrace();利用软件就可以画出你想要的简笔画,比如像菠萝一样的水果,哆啦A梦一样的卡通人物,还有很多很多,只要你想的到的都可以利用它画出来。创建的界面如图1所示,画出的菠萝如图2所示,画出的哆啦A梦如图所示。图1,打开软件图2,用画笔画菠萝图3,用画笔画哆啦A梦只有画画远远不是我们要的要的功能,当然还有几乎所有软件都具备的一个功能,设置。菜单中含有形状、清除、保存、设置。进入设置,有很多关于画画的各种

35、功能。画笔的宽度pen_width为默认初始宽度,画笔的颜色pen_color为默认颜色,画布的颜色为空即是白色,画画的风格为初始默认状态,以下是进入设置的部分代码。图4是菜单现实设置的界面。图5是进入设置之后的界面,有画刷宽度、颜色等功能的选择。import java.text.SimpleDateFormat;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import org.vhow.paintpad.R;import org.vhow.paintpad.helper.ColorPickerDialog;import

36、 org.vhow.paintpad.tools.Brush;import android.content.DialogInterface;import android.content.SharedPreferences;import android.content.pm.ApplicationInfo;import android.content.pm.PackageManager.NameNotFoundException;import android.os.Bundle;import android.preference.CheckBoxPreference;import android

37、.preference.Preference;import android.preference.Preference.OnPreferenceClickListener;import android.preference.PreferenceActivity;/* *当用户选择设置按钮,就跳转到这个activity。 *当用户点击的时候、实现OnPreferenceClickListener接口。 *优先调用onPreferenceClick()。 */public class SettingsActivity extends PreferenceActivity implementsOnP

38、referenceClickListener, ColorPickerDialog.OnColorChangedListenerSharedPreferences prefs = null;Preference pen_width = null;Preference pen_color = null;Preference canvas_bg_color = null;String pen_width_key;String pen_color_key;CheckBoxPreference pen_style = null;Preference versionName;Preference las

39、tBuildTime;Overrideprotected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);/* *XML对这个activity的虚拟设置 */addPreferencesFromResource(R.xml.settings);pen_width_key = getResources().getString(R.string.pen_width_key);pen_color_key = getResources().getString(R.string.pen_color_ke

40、y);/* *找到要处理的对象。 */pen_width = (Preference) findPreference(getResources().getString(R.string.pen_width_key);pen_color = (Preference) findPreference(getString(R.string.pen_color_key);versionName = (Preference) findPreference(getString(R.string.setting_about_version_key);lastBuildTime = (Preference) f

41、indPreference(getString(R.string.setting_about_build_key);versionName.setSummary(getVersionName();lastBuildTime.setSummary(getLastBuiltTime();/* *注册监听器。包含画刷宽度,画刷颜色。 */pen_width.setOnPreferenceClickListener(this);pen_color.setOnPreferenceClickListener(this);private String getLastBuiltTime()String las

42、tBuiltTimeString = Unknown;tryApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), 0);ZipFile zf = new ZipFile(ai.sourceDir);ZipEntry ze = zf.getEntry(classes.dex);long time = ze.getTime();lastBuiltTimeString = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new java.util.D

43、ate(time);catch (Exception e)/最后编译时间是“未知”.return lastBuiltTimeString;private String getVersionName()String versionName = Unknown;tryversionName = this.getPackageManager().getPackageInfo(getPackageName(), 0).versionName;catch (NameNotFoundException e)/最后的版本名是“未知”。return versionName;/* * 处理该事件的优先权 */p

44、ublic boolean onPreferenceClick(Preference preference)if (preference.getKey().equals(pen_color_key)String str = getResources().getString(R.string.tip_choose_color);new ColorPickerDialog(this, this, Brush.getPen().getColor(), str).show();else if (preference.getKey().equals(pen_width_key)showSetBrushW

45、idthDialog();return true;/* *弹出一个对话框SeekBar以控制画笔的宽度 */private void showSetBrushWidthDialog()SeekBarDialog seekBarDialog = new SeekBarDialog(this);seekBarDialog.setTitle(Brush.getPen().getStrokeWidth() + 像素);seekBarDialog.setButton(getResources().getString(R.string.alert_dialog_ok),new DialogInterfac

46、e.OnClickListener()public void onClick(DialogInterface dialog, int whichButton)dialog.dismiss(););seekBarDialog.show();/* *当画刷颜色改变时,这个方法将被调用。 */public void colorChanged(int color)Brush pen = Brush.getPen();pen.setColor(color);图4,打开菜单键图5,打开菜单中的设置当在菜单中选择形状之后,就会弹出形状的界面,在形状界面有很多形状供选择,下面可以有几个形状的源代码。当选择需要

47、形状之后就进入到画布,画出的图形就会是选择到的形状。直线代码如下:import org.vhow.paintpad.tools.Brush;import android.graphics.Canvas;/* *直线。 */public class StraightLine extends DrawingOverridepublic void draw(Canvas canvas)canvas.drawLine(this.startX, this.startY, this.stopX, this.stopY,Brush.getPen();矩形代码如下:import org.vhow.paintp

48、ad.tools.Brush;import android.graphics.Canvas;/* *矩形。 */public class Rect extends DrawingOverridepublic void draw(Canvas canvas)canvas.drawRect(this.startX, this.startY, this.stopX, this.stopY,Brush.getPen();轨迹线代码如下:import org.vhow.paintpad.tools.Brush;import android.graphics.Canvas;import android.g

49、raphics.Path;/* *跟踪手指在屏幕上运动。 */public class PathLine extends DrawingPath mPath = null;private float mX, mY;private static final float TOUCH_TOLERANCE = 4;public PathLine()mPath = new Path();Overridepublic void draw(Canvas canvas)canvas.drawPath(this.mPath, Brush.getPen();Overridepublic void fingerDo

50、wn(float x, float y, Canvas canvas)mPath.reset();mPath.moveTo(x, y);this.mX = x;this.mY = y;Overridepublic void fingerMove(float x, float y, Canvas canvas)float dx = Math.abs(x - mX);float dy = Math.abs(y - mY);if (dx = TOUCH_TOLERANCE | dy = TOUCH_TOLERANCE)mPath.quadTo(mX, mY, (x + mX) / 2, (y + m

51、Y) / 2);mX = x;mY = y;this.draw(canvas);Overridepublic void fingerUp(float x, float y, Canvas canvas)mPath.lineTo(mX, mY);this.draw(canvas);mPath.reset(); 图6,打开菜单中的形状功能在设置中就可以进行颜色选择,颜色的设置用public公有类ColorPickerDialog进行设置,定义颜色改变的方法colorChanged,下面是颜色设置的代码,图7是进入到颜色设置的界面。import android.app.Dialog;import a

52、ndroid.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.graphics.Shader;import android.graphics.SweepGradient;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;publi

53、c class ColorPickerDialog extends DialogString title;public interface OnColorChangedListenervoid colorChanged(int color);private OnColorChangedListener mListener;private int mInitialColor;private static class ColorPickerView extends Viewprivate Paint mPaint;private Paint mCenterPaint;private final i

54、nt mColors;private OnColorChangedListener mListener;ColorPickerView(Context c, OnColorChangedListener l, int color)super(c);mListener = l;mColors = new int 0xFFFF0000, 0xFFFF00FF, 0xFF0000FF,0xFF00FFFF, 0xFF00FF00, 0xFFFFFF00, 0xFFFF0000 ;Shader s = new SweepGradient(0, 0, mColors, null);mPaint = ne

55、w Paint(Paint.ANTI_ALIAS_FLAG);mPaint.setShader(s);mPaint.setStyle(Paint.Style.STROKE);mPaint.setStrokeWidth(32);mCenterPaint = new Paint(Paint.ANTI_ALIAS_FLAG);mCenterPaint.setColor(color);mCenterPaint.setStrokeWidth(5);private boolean mTrackingCenter;private boolean mHighlightCenter;Overrideprotec

56、ted void onDraw(Canvas canvas)float r = CENTER_X - mPaint.getStrokeWidth() * 0.5f;canvas.translate(CENTER_X, CENTER_X);canvas.drawOval(new RectF(-r, -r, r, r), mPaint);canvas.drawCircle(0, 0, CENTER_RADIUS, mCenterPaint);if (mTrackingCenter)int c = mCenterPaint.getColor();mCenterPaint.setStyle(Paint

57、.Style.STROKE);if (mHighlightCenter)mCenterPaint.setAlpha(0xFF);elsemCenterPaint.setAlpha(0x80);canvas.drawCircle(0, 0, CENTER_RADIUS+ mCenterPaint.getStrokeWidth(), mCenterPaint);mCenterPaint.setStyle(Paint.Style.FILL);mCenterPaint.setColor(c);Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)setMeasuredDimension(CENTER_X * 2, CENTER_Y * 2);private static final int CENTER_X = 100;private static final int CENTER_Y = 100;private static final int CENTER_RADIUS =

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!