计算器APP开发总结
这是我这个项目在GitHub上的链接:https://github.com/MoyesYSF/CalculatorDebug
所用知识详解
在实现这个计算器APP的时候,我是先实现计算器的布局,而后再根据布局中一些控件的ID逐步实现计算逻辑的,相信极大多数的开发也都是这样的一个流程。以下是分UI布局和计算逻辑来对我的这个APP进行一些解释。
实现UI布局
在实现UI布局中,运用了相对布局(RelativeLayout)的百分比扩展功能,即用相对布局实现空间的相对位置,百分比则是设置它们的占屏大小(百分比布局的使用可以使控件很好地适配屏幕尺寸)。需要注意的是,在使用百分比布局时需要在app/build.gradle文件的dependencies闭包中添加一个内容:
compile 'com.android.support:percent:25.3.1'
//后面的版本因AS的相关配置的不同而不同
设定百分比布局与相对布局后,通过傻瓜式拖拽控件的方法实现UI布局的雏形,再通过编写代码的形式完善布局,设置控件的一些属性,如背景颜色、占屏大小等。(本人设置的效果图如下,文末附有源代码)
实现计算逻辑
运算逻辑的实现是基于UI布局的,从上面的UI布局上可以看得出有12种运算方式,还包括了删除与清屏的功能。
具体的实现过程是这样的,注册点击事件是第一步,通过监听点击时间将相应的内容显示在editTiew上,而将所有的输入内容看做是字符串,数字与运算符的读取都是通过对字符串的操作而实现的。这里主要用到indexOf方法定位运算符的位置,然后根据运算符的位置来取得数字(不同运算符的截取方式不同,如sin与!,前者是截取后面的内容作为运算数字,后者则是截取前面的内容作为运算字符),这里要将字符串转化为数字需要用到Double.parseDouble或者Integer.parseInt方法。
遇到的问题及解决方法
实现布局是挺简单的,基本没遇到什么问题;倒是在实现运算逻辑的时候,被一个小小的问题给卡住了,还花了不少时间去debug,现在想想都觉得自己弱鸡。
整一套下来还是十分简单的,就是在使用indexOfOperator的时候没有弄清其含义,其含义其实是定位出Operator的位置,但需要注意的是这定义出来返回的结果是一个数字,也就是Operator在字符串中的第一个位置,但若运算符是多个字符如sin,con,lg等就需要分开讨论了。文末附有源代码,可以了解一下。
收获与感想
我也是才接触安卓开发没多久,很幸运加入了学校的一个APP开发团队,开始有意识地以一种对待职业的态度去规范自己、要求自己,在这个团队学习的这段时间的确收获了许多,成长了许多。完成一个计算器APP的开发也是这个团队的大佬给我们布置的任务,由于才入门,所以对安卓的开发不是很熟悉,刚接到这个任务时自己也是不知该如何下手,不过身边的资源很多,在经过对安卓开发的相关学习之后,好像觉得像那么回事了,于是自己就动手去实现这个计算器APP了。
因为很多方法很多相关的知识都还没有个所以然,所以刚起步的时候是很依赖书籍进行的。码着码着就有了感觉了,后来就是可以撇开参考书籍自己干了,这个过程也收获了一丢丢成就感。开发,只要对头了,路就好走了。
Learning by doing 是我在一个关于如何学习IT技术的讲座上听到的一个词,觉得这个词在理,所以一直记在脑中。诚然,现在是技术飞速发展的时代,从事这方面的人要时时刻刻准备更新自己的知识,很多时候我们并不能完整的学习一套技术再去搞开发,那样子的学习过程是很无趣的,可能效率也是极低的,就拿我完成的这个任务为例,如果我是将学习与实践分隔开的话,那我可能就不能准时完成这个任务了(这个任务给我们的完成时间是两周)。想强调的是,我们需要有一套自己的学习方法,也可以借鉴一些学习牛人的学习方法,但请记住,适合自己的才是最好的。只要我们的学习能力强,学习方法高效,知识的学习掌握也自然事半功倍了。
-
布局源代码(calculator_activity.xml)