安卓课程设计报告.docx
《安卓课程设计报告.docx》由会员分享,可在线阅读,更多相关《安卓课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
安卓课程设计报告
安
卓
课
程
设
计
班级09级计算机二班
学号20097923
姓名郭丹
第1章安卓应用程序开发背景
§1.1开发背景
1.智能手机的市场
(1)功能多样化的智能手机挑战全球PC出货量
移动互联网时代的来临,直接促进了搭载智能操作系统、具有强大扩展性的智能手机、平板电脑等移动终端产业的蓬勃发展。
来自美国最大的风险投资机构KPCB的数据显示,全球智能手机出货量正在以远高于台式电脑、笔记本电脑出货量的速度快速增长,该机构预计2011年全球智能手机出货量将达到4.13亿,超过台式电脑与笔记本电脑出货量的总和。
(2)智能手机的用户使用数量正在高速增长。
据市场调研机构Gartner信息,2011年全球智能手机的总出货量将会达到4.68亿部,相比2010年实现了57.7%的增长,而谷歌Android操作系统将会在今年之内成为全球最大的智能手机操作系统。
另外,全球市场调研机构IDC预计未来5年中国手机市场上,智能手机替代传统功能手机的趋势将日益明显,未来5年中国智能手机市场复合增长率将达到34.1%,人们对IT设备智能化的向往是这一增长率能够实现的主要因素,并且与其他国家相比,中国智能手机市场的发展空间更加广阔。
(3)操作系统格局预测:
Android有望成为智能手机市场主导力量
搭载Android操作系统的智能手机目前已经成为市场上最炙手可热的智能产品。
来自美国市场研究机构Gartner的数据显示,Android操作系统所占的市场份额从2008年的0.5%急剧增长到2011年的15.94%。
开放的源代码和零成本已经让Android在全世界范围内受到青睐并迅速获得了主要手机厂商和数百万软件开发者的支持,Gartner预计,未来Android系统的市场份额有望超过其他操作系统,从而成为全球第一大智能手机操作系统。
2.安卓手机介绍
安卓手机指的是用Android操作系统的手机。
安卓(Android)是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。
同样都是手机上面用的智能系统,安卓的系统是新生系统,界面更为华丽,开源性更强,当然因为是新生系统,所以在第三方软件方面暂时还不太多。
因此,安卓应用程序的需求还是很迫切的。
3.软件人才需求
据业内统计,目前国内的Android研发人才缺口至少30万。
由于目前Android技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。
从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才的就业前景也非常广泛。
综上所述,在这样的背景下,安卓有很强的生命力。
同时,作为一个新生的系统,其应用程序目前并不多,安卓应用程序的需求还是很迫切的,安卓研发人才的缺口还很大。
这些都促进了我们学习开发安卓应用程序。
§1.2开发环境
安卓应用程序开发环境如下:
①JDK5orJDK6(JREaloneisnotsufficient)
②Eclipse3.3(Europa),3.4(Ganymede)
③AndroidSDK
④ADT0.8.0
⑤Eclipse安装ADT插件
第2章安卓应用程序开发理论与方法
1、Activity的相关知识
简单理解Activity代表一个用户所能看到的屏幕,Activity主要是处理一个应用的整体性工作。
Activity是最基本的Android应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。
每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。
大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。
(1)Activity的相关方法及相关函数:
A、voidonCreate(Bundle)
首次启动时调用,接受参数:
NullorsavedInstanceState(保存的以前某些状态信息)
B、voidonStart()
说明了将要显示给用户的活动
C、voidonRestart()
将处于停止状态的活动重新显示给用户
D、voidonResume()
用户可以开始与活动进行交互时调用。
如动画播放和音乐播放。
E、voidonPause()
活动将要进入后台运行时调用。
(此时前台启动了另一个活动)
F、voidonStop()
不需要某个活动了,就调用
G、voidonDestroy()
销毁活动
(2)多个Activity之间的跳转:
通过Intent类实现屏幕之间的跳转(包括没有参数关系和需要传递参数两种情况)。
(3)两个Activity之间进行数据交换:
startActivity()只有Intent一个参数。
publicvoidstartSubActivity(Intentintent,intrequestCode)
(requestCode:
用来标识某一个调用,一般定义一个常量。
)
传过去:
函数原型为:
publicIntentsetData(ContentURIdata)然后,参数带到新的Activity后,同样用Activity.getIntent()函数可得到当前过来的Intent对象,然后用getData()就取到参数了。
传回来:
函数原型为:
publicfinalvoidsetResult(intresultCode,Stringdata)
2、Intent的相关知识
Intent是描述应用想要做什么。
Android使用了Intent这个特殊类,实现在屏幕与屏幕之间移动。
Intent数据结构两个最重要的部分是动作和动作对应的数据。
Intent类绑定一次操作,它负责携带这次操作所需要的数据以及操作的类型等。
3、Layout
用于用户界面设计。
包含AbsoluteLayout,FrameLayout,GridView,LinearLayout,ListLayout,RadioGroup,TableLayout等等。
在本程序中用到的有:
(1)线性布局LinearLayout
垂直:
android:
orientation="vertical“
水平:
android:
orientation="horizontal"
(2)相对布局RelativeLayout
让子元素指定它们相对于其他元素的位置(通过ID来指定)或相对于父布局对象。
在RelativeLayout布局里的控件包含丰富的排列属性:
Layoutabove:
控件在指定控件的上方
Layoutbelow:
控件在指定控件的下方
Layouttoleftof……
第3章“计算器”应用程序的设计与实现
§3.1拟解决的问题及目标
本计算器程序要解决日常生活中常见的基本数据计算问题,程序要实现的目标有如下几个:
(1)要实现基本的加、减、乘、除四则运算。
(2)可以实现在前一步计算结果上继续作加、减、乘、除,即连加、减、乘、除。
(3)有清空功能,即清除所有数据,重新开始计算。
(4)可实现基本的三角函数的计算,如:
正弦,余弦,正切,余切。
(5)可实现一些特殊运算,如:
平方,立方,开方,求对数等。
§3.2总体设计
1、系统的软件结构图
图3-1
2、功能的操作流程
首先用户根据自己的实际需要选择计算的类型,然后进入不同的计算类型,再进行要执行的运算,输入数据,选择运算符号,即可得到结果。
§3.3详细设计与编码实现
1、功能选择界面
图3-2为系统主界面。
用户可以根据需要点击不同按钮进入不同功能的子界面。
亦可以点击退出按钮退出本程序。
图3-2
本界面用LinearLayout来布局,主要用到的控件是Button。
页面的跳转是通过intent来是实现的。
跳转的主要代码如下:
publicvoidonClick(Viewv)
{
Buttonbtn=(Button)v;
switch(btn.getId())
{
caseR.id.button1:
Intentintent=newIntent();
intent.setClass(mycalActivity.this,secondactivity.class);
startActivity(intent);
break;
caseR.id.button2:
Intentintent=newIntent();
intent.setClass(mycalActivity.this,thirdactivity.class);
startActivity(intent);
break;
caseR.id.button3:
Intentintent=newIntent();
intent.setClass(mycalActivity.this,forthactivity.class);
startActivity(intent);
break;
caseR.id.button4:
finish();
}
2、基本加减乘除界面
图3-3为加基本减乘除界面。
用户在文本框中输入参加运算的数据,并点击要进行的运算符号,然后点击等号之后,将在等号下方显示结果处显示出计算结果。
点击clear按钮,可以将两个文本框中的内容以及显示的结果一起清空,用户可以输入新的数据计算。
在文本框中输入时可以用图右侧的硬键盘,或者是手机自带的软键盘。
图3-3
示例如下:
(1)用户要计算1.23+2.16.在文本框1中输入1.23,点击“+”,再在文本框2中输入2.16,点击“=”,就可以显示出计算结果3.39.如下:
图3-4
(2)计算1-0.32,如图3-5
图3-5
(3)计算3.24*0.25,如图3-6所示。
图3-6
(4)计算55/4,结果为13.75.如下图所示:
图3-7
(5)计算1/6.如下图所示。
由图3-8可以看出,当除不尽时本计算器保留到8位小数,并且最后一位采用了四舍五入的方法,比较科学、准确。
图3-8
(6)点击clear之后全部清空:
图3-9
具体的实现:
主要的思路是,用户先输第一个数,然后点击运算符号,在程序中监听按钮的点击,如果点击了+、--、*、/中某一按钮,这时,就取editText1中的值,通过myeditText1=editText1.getText().toString()实现,为了参与运算,需要把字符串类型转换为浮点型,并将其值赋给变量a,代码为a=Float.parseFloat(myeditText1);用flag的不同值记录用户点击的不同的运算按钮。
当用户点击“=”时,就将editText2中的内容取出,也同样转化为数值,并用b记录,然后判断flag的值即可知道对应应采取哪种计算,进而算出最终结果,并用textView1显示出计算结果。
“清空”的实现是使对应控件的内容取空即可。
核心代码如下:
privateOnClickListenerlistener=newOnClickListener()
{
StringmyeditText1;
StringmyeditText2;
floata=0;
intflag=0;
floatb=0;
floatresult;
publicvoidonClick(Viewv)
{
Buttonbtn=(Button)v;
switch(btn.getId())
{
caseR.id.button1:
myeditText1=editText1.getText().toString();
a=Float.parseFloat(myeditText1);flag=1;
break;
caseR.id.button2:
myeditText1=editText1.getText().toString();
a=Float.parseFloat(myeditText1);
flag=2;
break;
caseR.id.button3:
myeditText1=editText1.getText().toString();a=Float.parseFloat(myeditText1);
flag=3;
break;
caseR.id.button4:
myeditText1=editText1.getText().toString();a=Float.parseFloat(myeditText1);
flag=4;
break;
caseR.id.button5:
myeditText2=editText2.getText().toString();b=Float.parseFloat(myeditText2);
if(flag==1)
result=a+b;
elseif(flag==2)
result=a-b;
elseif(flag==3)
result=a*b;
else
result=a/b;
Strings="显示结果:
";
s+=result;
textView1.setText(s);
break;
caseR.id.button6:
editText1.setText("");
editText2.setText("");
textView1.setText("显示结果:
");
break;
}
}
};
3、三角函数运算界面
图3-10为三角函数运算界面。
用户在文本框中输入参与计算的数据,然后选择点击要进行的运算类型,这时在显示结果处就会显示计算结果。
例如,要计算sin30度,先在文本框中输入30,然后点击sin按钮,这时就会显示结果为0.5.同理,可进行其他计算。
图3-10
4、其他运算界面
图3-11为其他运算界面,目前可实现平方、立方、开方、求以10为底的对数四种运算,由于时间有限,这个界面目前功能并不完善,暂时实现四种运算,不过,基于本计算器程序的设计理念,本界面主要实现一些其他运算,包括一些特殊运算。
在今后,这个界面可以修改和扩充,以至拥有更加完善丰富的计算功能。
在现有的界面上的操作流程如下:
用户在文本框中输入要进行运算的数据,然后选择点击运算按钮,即可显示运算结果。
如输入0.5,点击平方,即显示结果0.25,操作方便。
图3-11
第4章总结
在本次安卓应用程序开发之中,我收获很多,现总结如下:
安卓设计开发过程初期,我打算设计制作一个计算器。
但是,刚开始并不能预测难度,不知道在短期内能否很好的完成,于是我的想法是,先实现基本的加、减、乘、除四则运算,然后在此基础上进一步完善丰富其运算功能。
首先遇到的问题便是要不要做一个数字键盘。
刚开始也试着做了一个键盘,是用button做的,需要很好的布局,但是每当扩充一种功能时,为了使界面整体美观,甚至都要重新设计,很麻烦。
后来候突然想到手机有硬键盘,也有自带的软键盘,何不运算的时候直接调出已有的软键盘?
这样,根本没有什么必要自己做键盘了,而只需做出运算的按钮即可了。
由于当时的目标只是实现加减乘除,因此设计的界面是用两个文本框输入两个数据,然后有+、-、*、/四个按钮供选择,又加一个“=”按钮用于触发显示结果。
界面很简单,使用很方便。
然后就是才用合适的算法来实现功能。
经过思考和多次修改,最后确定了一种比较简明的算法实现。
基本加减乘除功能已经实现,但是计算器的功能过于简单了,接下来便是扩充功能。
我首先想到的是需要能实现三角函数运算,常见的平方、开方等运算。
但是我遇到了困难。
由于刚开始设计的加减乘除运算都是二元运算,因此界面设计的是在两个文本框中输入两个数,但是三角函数计算,平方开方计算都是一元运算,参加运算的数据都只有一个,因而,在原界面上直接扩充并不合适,两个文本框成了扩充的限制。
后来经过思考,决定将这些扩充的功能做到别的界面上,与已有的界面相独立,重新设计,这样只需将运算分类,再做一个功能选择的界面,点击不同的运算类别进入不同的运算界面即可,这样这个问题便得到了很好的解决。
但是这次设计却给了我很大的教训,开发应用软件的初期设计很重要,不仅要实现现在的目标,还要考虑以后能否进行功能扩充,设计要便于以后的功能扩充,否则,到后来需要扩充时遇到困难,甚至要推翻已有的设计,花费很大的代价。
另外,由于时间紧迫,三角函数界面和其他运算界面的功能并不十分完善,只是一些基本的运算,初步体现出了设计的思想,今后还可以进行进一步的扩充,以完善其功能。
在本次开发过程中,我对开发环境进一步的熟悉,基本上可以熟练运用这个环境,也基本掌握了安卓的开发方法及基本流程。
在本次开发过程中,主要用到的知识有Activity的使用,在程序中用到了多个窗口,因而需创建多个Activity。
还用到了Intent,主要是用于多个Activity之间的跳转,对Intent的作用和用法有了更进一步的熟悉。
在本次程序设计中,我也对用户界面设计有了更进一步的掌握,熟练运用Layout,本次用到的主要是LinearLayout和RelativeLayout。
开发期间,我学会了有目的的去学习一些将要用到的东西,仔细地考虑工作流程的规律和步骤,充分利用手中的开发工具,利用其所具备的功能,尽量使自己的开发在代码上实现少而精确、让用户能够尽量简单地进行操作。
但是在检测过程中,还是出现了很多的不足之处,这些都是要在今后的工作中需要努力改进和完善的。
在这次程序开发设计中,我也难免会遇到不少困难,这主要是由于我对所用的开发环境并不是很熟悉,开发软件的经验不足。
安卓开发用的语言是java,但是我对java的学习并不多,这次开发对我来说可以算是一个全新的尝试,整个开发过程并不是很顺利,却使我从中充分体会到学习的快乐,开发的程序也在一步步得到完善。
这次程序开发由于个人水平及时间有限等原因,只能完成一些基本的功能,好多设想并未完全实现,这不能不说是个遗憾,后期仍需努力。