学校组织的《移动互联网应用软件开发》技能竞赛,所有参赛命题均基于Android4.2 版本实现,比赛推荐使用的开发环境为:ADT, JDK 1.6, Android SDK 4.1
  经过了四天的培训我们小组选择在计算器应用
计算器能够实现:


1. 数学四则运算
2. 实现开方元算
 3. 实现求倒数运算
 4. 实现百分比运算
     5. 实现删除一位数字的功能
     6. 实现删除所有数据的功能
     7. 实现临时存储数据的功能


  目前我可以完成全部功能,虽然是扩展老师的基础程序,但还是很有成就感的。
  我们先进行了对Java的培训,多线程、匿名内部类、接口及其子类异常的捕获,然后使用两本书《Android移动应用开发项目教程》和《Android编程权威指南》来开展对Android的学习。给我的感觉是,开发Android应用程序和普通的Java应用程序没有太大区别,最后运行的时候才Android虚拟机上运行就好。
  开发Android项目的时候虽然老师给我们推荐谷歌推出了新的Android开发环境Android Studio,但是我们用的是带插件的Eclipse,安装好JDK配置好ADT集成开发环境之后就开始了。升级Android SDK也很重要,直接升级的话需要连接Google服务器的,所以是需要×××的,为了避免这种情况,也可以到高校自己的网站去升级。就不废话了,上代码。
  MainActivity.java


packagecom.wangjingliang.calc;importjava.util.*;importcom.shiyifei.calc.R;importandroid.os.Bundle;importandroid.app.Activity;importandroid.util.Log;importandroid.view.Menu;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.Toast;publicclassMainActivityextendsActivity{EditTextresult;//保存当前输入框内容Stringcurrent="0";//保存之前输入的内容Stringprev="";//保存输入状态,是刚刚输入了一个数字,还是输入了一个运算、控制符号intstatus=0;//0刚刚输入了数字,1刚刚输入了运算符号//保存刚刚输入的运算符号Stringcom="";//保存存储器中的数值Stringnum="";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//拿到输入框对象result=(EditText)findViewById(R.id.editText1);//让输入框一开始显示0update();}//此处的方法是和在布局中给按钮们设定的onclick属性对应的//点完那些按钮后,执行该方法publicvoidclick(Viewv){//现获取按钮上的内容Stringbtn_text=((Button)v).getText().toString();//通过getId可以获取被点的按钮的id,和我们设定的id比照switch(v.getId()){caseR.id.b0:caseR.id.b1:caseR.id.b2:caseR.id.b3:caseR.id.b4:caseR.id.b5:caseR.id.b6:caseR.id.b7:caseR.id.b8:caseR.id.b9://检测上一次输入的是什么,如果是数字,就连接显示,如果是运算符,清空输入框,//开始新的数字的显示if(status==0){//检测当前输入框中是否仅有0,如果仅有零,就将当前内容替换为输入的数字//如果不是仅有0,则将当前按下的数字,连接到当前内容的最后if(onlyZero())current=btn_text;elsecurrent+=btn_text;//把当前状态置为0,表示刚刚输入的是数字status=0;}elseif(status==1){current=btn_text;}break;//如果按下了加号caseR.id.b_add:caseR.id.b_sub:caseR.id.b_multi:caseR.id.b_div:caseR.id.b_sqrt:caseR.id.b_rev:caseR.id.b_per://把当前状态置为1,表示刚刚输入的是符号status=1;//把当前输入框的内容,作为之前输入的内容保存在prev中prev=current;//保存当前运算符号com=btn_text;break;caseR.id.b_equal:compute();break;caseR.id.b_c:clearAll();break;caseR.id.b_ce:clearPart();break;caseR.id.b_back:clearSingle();break;caseR.id.b_dot:addDot();break;caseR.id.b_sign:addSign();break;caseR.id.b_ms:Store();break;caseR.id.b_mr:Out();break;caseR.id.b_mp:addStore();break;caseR.id.b_mc:clearIn();break;}//更新输入框的当前内容update();}/***按下等号后调用的方法,计算**@return返回计算结果*/privatedoublecompute(){doubleold=Double.parseDouble(prev);doublecur=Double.parseDouble(current);Log.d("------获取的按钮文字-------",com);doubleresult=0;if(com.equals("+")){result=old+cur;}elseif(com.equals("-")){result=old-cur;}elseif(com.equals("*")){result=old*cur;}elseif(com.equals("/")){//除数为0检测if(cur==0){warning();}else{result=old/cur;}}elseif(com.equals("sqt")){result=Math.sqrt(old);}elseif(com.equals("1/x")){result=1/old;}elseif(com.equals("%")){cur=(old*cur)/100;}elseif(com.equals(""))//计算得到结果后,立刻更新输入框prev=current;current=result+"";update();returnresult;}/***清理之前和当前的数据*/privatevoidclearAll(){prev="";current="";com="";status=0;}privatevoidclearPart(){current="";}privatevoidclearSingle(){if(current.length()>1){current=current.substring(0,current.length()-1);}else{current="0";}result.setText(current);}privatevoidStore(){num=current;}privatevoidaddStore(){doublecur=Double.parseDouble(current);doublen=Double.parseDouble(num);n+=cur;num=String.valueOf(n);}privatevoidOut(){current=num;}privatevoidclearIn(){num="";}privatevoidaddDot(){if(current.indexOf(".")!=-1){current="";}else{current=current+".";}}privatevoidaddSign(){if(current.indexOf("-")!=-1){current=current.replace('-','');}else{current="-"+current;}}//更新输入框内容publicvoidupdate(){result.setText(current);}publicvoidwarning(){Toast.makeText(MainActivity.this,"除数不能为零",0).show();}/***检测当前输入的内容是否仅仅是0**@return如果只有零,返回true,否则false*/publicbooleanonlyZero(){returncurrent.length()==1&&current.equals("0");}}

BuildConfig.Java

/**Automaticallygeneratedfile.DONOTMODIFY*/packagecom.shiyifei.calc;publicfinalclassBuildConfig{publicfinalstaticbooleanDEBUG=true;}

R.java

/*AUTO-GENERATEDFILE.DONOTMODIFY.**Thisclasswasautomaticallygeneratedbythe*aapttoolfromtheresourcedataitfound.It*shouldnotbemodifiedbyhand.*/packagecom.shiyifei.calc;publicfinalclassR{publicstaticfinalclassattr{}publicstaticfinalclassdimen{/**Defaultscreenmargins,pertheAndroidDesignguidelines.Customizedimensionsoriginallydefinedinres/values/dimens.xml(suchasscreenmargins)forsw720dpdevices(e.g.10"tablets)inlandscapehere.*/publicstaticfinalintactivity_horizontal_margin=0x7f040000;publicstaticfinalintactivity_vertical_margin=0x7f040001;}publicstaticfinalclassdrawable{publicstaticfinalintic_launcher=0x7f020000;publicstaticfinalintic_launcher_calc=0x7f020001;}publicstaticfinalclassid{publicstaticfinalintLinearLayout1=0x7f080000;publicstaticfinalintaction_settings=0x7f080023;publicstaticfinalintb0=0x7f08001e;publicstaticfinalintb1=0x7f080017;publicstaticfinalintb2=0x7f080018;publicstaticfinalintb3=0x7f080019;publicstaticfinalintb4=0x7f080010;publicstaticfinalintb5=0x7f080011;publicstaticfinalintb6=0x7f080012;publicstaticfinalintb7=0x7f080009;publicstaticfinalintb8=0x7f08000a;publicstaticfinalintb9=0x7f08000b;publicstaticfinalintb_add=0x7f080021;publicstaticfinalintb_back=0x7f080004;publicstaticfinalintb_c=0x7f080006;publicstaticfinalintb_ce=0x7f080005;publicstaticfinalintb_div=0x7f08000c;publicstaticfinalintb_dot=0x7f080020;publicstaticfinalintb_equal=0x7f080022;publicstaticfinalintb_mc=0x7f080008;publicstaticfinalintb_mp=0x7f08001d;publicstaticfinalintb_mr=0x7f08000f;publicstaticfinalintb_ms=0x7f080016;publicstaticfinalintb_multi=0x7f080013;publicstaticfinalintb_per=0x7f080014;publicstaticfinalintb_rev=0x7f08001b;publicstaticfinalintb_sign=0x7f08001f;publicstaticfinalintb_sqrt=0x7f08000d;publicstaticfinalintb_sub=0x7f08001a;publicstaticfinalinteditText1=0x7f080001;publicstaticfinalintr1=0x7f080002;publicstaticfinalintr2=0x7f080007;publicstaticfinalintr3=0x7f08000e;publicstaticfinalintr4=0x7f080015;publicstaticfinalintr5=0x7f08001c;publicstaticfinalinttextView1=0x7f080003;}publicstaticfinalclasslayout{publicstaticfinalintactivity_main=0x7f030000;}publicstaticfinalclassmenu{publicstaticfinalintmain=0x7f070000;}publicstaticfinalclassstring{publicstaticfinalintaction_settings=0x7f050001;publicstaticfinalintapp_name=0x7f050000;publicstaticfinalinthello_world=0x7f050002;}publicstaticfinalclassstyle{/**Baseapplicationtheme,dependentonAPIlevel.ThisthemeisreplacedbyAppBaseThemefromres/values-vXX/styles.xmlonnewerdevices.ThemecustomizationsavailableinnewerAPIlevelscangoinres/values-vXX/styles.xml,whilecustomizationsrelatedtobackward-compatibilitycangohere.BaseapplicationthemeforAPI11+.ThisthemecompletelyreplacesAppBaseThemefromres/values/styles.xmlonAPI11+devices.API11themecustomizationscangohere.BaseapplicationthemeforAPI14+.ThisthemecompletelyreplacesAppBaseThemefromBOTHres/values/styles.xmlandres/values-v11/styles.xmlonAPI14+devices.API14themecustomizationscangohere.*/publicstaticfinalintAppBaseTheme=0x7f060000;/**Applicationtheme.AllcustomizationsthatareNOTspecifictoaparticularAPI-levelcangohere.*/publicstaticfinalintAppTheme=0x7f060001;}}