安卓计算器小程序Word格式文档下载.docx
- 文档编号:17070246
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:18
- 大小:432.38KB
安卓计算器小程序Word格式文档下载.docx
《安卓计算器小程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《安卓计算器小程序Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
不过IBM声称SWT比其他Java窗口组件更有效率。
Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。
Eclipse的设计思想是:
一切皆插件。
Eclipse核心很小,其他所有功能都以插件的形式附加于Eclipse核心之上。
Eclipse基于内核包括:
图形API(SWT/JFace),Java开发环境插件(JDT),插件开发环境(PDE)等。
Eclipse的插件机制是轻型软件组件化架构。
在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。
已有的分离的插件已经能够支持C/C++(CDT)、Perl、Ruby、Python、telnet和数据库开发。
插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
1.4Android程序基础—Android应用程序的构成
1.Activity顾名思义,Activity就是活动。
应用程序必须至少包含一个Activity。
Activity提供了一个虚拟的用户接口,每一个Activity都有一个默认的窗口可以用来显示用户界面,一般情况下,它是全屏的窗口。
例如,影音播放软件的每个用户界面就是Activity。
2.ServiceService与Activity的主要区别在于,Service是在后台活动的,它没有用户界面。
典型的应用场景是,用户选择了一个播放列表开始播放后,离开了该用户界面(Activity),如果仍然希望歌曲不会暂停,就可以用Service去调用播放器,而不是在Activity中调用播放器。
3.Intent在Android中,每一个行为都可以抽象为一个Intent。
可以简单地把Intent理解为一个包含了数据的消息。
Intent可以用于启动一个Act-ivity或者Service,可以用于进程间的通信。
事实上,应用程序的启动也是通过Intent实现的。
4.ContentprovidersAndroid平台内置了一套SQLite数据储存机制,并包含一系列管理SQLiteDatabase的相关方法。
在应用程序中,可以通过Contentprov-iders访问数据库。
每个Contentprovider都定义了一系列的方法用于访问它对应的数据库。
应用程序在新建数据库时也可以定义相应的Con-tentprovider用于向其他应用程序共享数据。
一般情况下,应用程序不直接调用Contentprovider定义的函数,而是通过ContentResolver间接调用。
第2章系统分析与设计
2.1系统的可行性分析
可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的实时调查得出以下四点的可行性分析:
(1)技术可行性:
Eclipse+AndroidADT的技术已经较为成熟,通过SUN公司(现被ORCEL公司收购)推出的跨平台、动态的JAVA语言进行开发。
(2)运行可行性:
该系统需要Android虚拟机环境,Eclipse中安装ADT,DDMS等GoogleAndroid相关插件。
其运行环境已经相当稳定,它功能丰富,包括了完备的Android程序的编码、调试、测试和发布功能,其中支持所有Android应用开发相关技术,包括SQLite,Skia,3D制作,AndroidXML,能够很好的发布Android的应用程序APK包。
(3)法律可行性:
因为是自主开发设计,所以不会构成侵权,在法律上是可行的。
通过以上的可行性分析,将采用Eclipse+AndroidADT+DDMS技术,运用JAVA语言进行系统的开发。
2.2系统的需求分析
根据分析需求,这个系统必须实现以下的功能:
(1)实现简单的数字计算功能。
作为计算器,其核心就是加减乘除。
(2)能够在手机里面以良好的界面。
简单计算器能够给予用户良好的人机互动界面。
2.3系统的优势
Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。
本次课程设计一个简易的计算器。
主要了解Activity的创建和Intent的使用。
Intent不仅可以连接两个Activity。
而且可以传递数据。
下面是整个程序的设计流程。
2.4系统的流程图
本程序的流程是一个开机画面,开机画面之后就是计算机的主页面了所有这个简单程序的流程图如图2.1所示。
第一个
Activity
第二个
加法
减法
除法
乘法
图2.1程序流程图
第3章系统详细设计
3.1动作Activity
参照程序的流程图,设计Activity。
分别为进入页面的Activity,和选择运算方式的Activity。
在这里应该注意的是每当创建一个新的class,就要继承Activity如图3.1所示。
图3.1程序所需的Activity
3.2布局文件XML
相应的,需要在res/layout文件夹中建立XML文件来对上述的十个Activity进行布局,如图3.2所示。
图3.23个XML布局文件
总体上所需要的Activity和XML布局文件已经建立完毕,下面开始对进入计算器的Activity进行编写,
3.3Activity的详细设计
动作模块中CalculatorActivity.java的详细代码如下:
packagecom.android.xiong.gridlayoutTest;
importjava.math.BigDecimal;
importjava.util.regex.Pattern;
importcom.android.xiong.gridlayoutTest.R.id;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.Menu;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.GridLayout;
importandroid.widget.TextView;
publicclassMainActivityextendsActivity{
privateEditTextprint;
privatestaticStringfistNumber="
0"
;
//第一次输入的值
privatestaticStringsecondNumber="
//第二次输入的值
privatestaticStringnum="
//显示的结果
privatestaticintflg=0;
//结果累加一次
publicCountstake=null;
privateint[]btidTake={R.id.txtdivide,R.id.txtx,R.id.txtmin,
R.id.txttakesum};
privateButton[]buttonTake=newButton[btidTake.length];
privateint[]btidNum={R.id.txt0,R.id.txt1,R.id.txt2,R.id.txt3,
R.id.txt4,R.id.txt5,R.id.txt6,R.id.txt7,R.id.txt8,R.id.txt9,
R.id.txtspl};
privateButton[]buttons=newButton[btidNum.length];
privateint[]btcl={R.id.chars,R.id.charx,R.id.txtb,R.id.txtv};
privateButton[]btcls=newButton[btcl.length];
privateGridLayoutgly;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gly=(GridLayout)findViewById(R.id.gly);
print=(EditText)findViewById(R.id.print);
print.setText("
);
print.setEnabled(false);
GetNumberget=newGetNumber();
for(inti=0;
i<
btidNum.length;
i++){
buttons[i]=(Button)findViewById(btidNum[i]);
buttons[i].setOnClickListener(get);
}
Computecm=newCompute();
btidTake.length;
buttonTake[i]=(Button)findViewById(btidTake[i]);
buttonTake[i].setOnClickListener(cm);
Buttoneq=(Button)findViewById(R.id.txteq);
eq.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
if(flg==0){
secondNumber=print.getText().toString();
if(take==Counts.DIVIDE&
&
secondNumber.equals("
)){
print.setText("
0不能为被除数"
}else{
num=take.Values(fistNumber,secondNumber);
fistNumber=num;
secondNumber="
print.setText(num);
flg=1;
gly.setBackgroundResource(R.drawable.jz);
}
}
}
});
Buttoncleargo=(Button)findViewById(R.id.cleargo);
cleargo.setOnClickListener(newOnClickListener(){
//TODOAuto-generatedmethodstub
if(num.length()>
1){
num=num.substring(0,num.length()-1);
}else{
num="
print.setText(num);
Buttonclear=(Button)findViewById(R.id.clear);
clear.setOnClickListener(newOnClickListener(){
num="
fistNumber=secondNumber=num;
flg=0;
btcl.length;
btcls[i]=(Button)findViewById(btcl[i]);
btcls[i].setOnClickListener(newOnTake());
}
//给EditText赋值
classGetNumberimplementsOnClickListener{
@Override
publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
if(flg==1)
if(num.equals("
print.setText("
"
num=v.getId()==R.id.txtspl?
"
:
Stringtxt=((Button)v).getText().toString();
booleans=Pattern.matches("
-*(\\d+).?
(\\d)*"
num+txt);
num=s?
(num+txt):
num;
gly.setBackgroundResource(R.drawable.js);
print.setText(num);
//根据条件计算
classComputeimplementsOnClickListener{
publicvoidonClick(Viewarg0){
fistNumber=print.getText().toString();
switch(arg0.getId()){
caseR.id.txttakesum:
take=Counts.ADD;
break;
caseR.id.txtmin:
take=Counts.MINUS;
caseR.id.txtx:
take=Counts.MULTIPLY;
caseR.id.txtdivide:
take=Counts.DIVIDE;
num="
flg=0;
classOnTakeimplementsOnClickListener{
switch(v.getId()){
caseR.id.chars:
-"
+num;
caseR.id.charx:
if(!
num.equals("
))
num=BigDecimal.valueOf
(1).divide(newBigDecimal(num),12,BigDecimal.ROUND_UP).stripTrailingZeros()
.toString();
caseR.id.txtb:
num=newBigDecimal(num).divide(BigDecimal.valueOf(100),12,BigDecimal.ROUND_UP).stripTrailingZeros()
caseR.id.txtv:
Doublenumss=Math.sqrt(newBigDecimal(num).doubleValue());
intstratindex=numss.toString().contains("
."
)?
numss.toString().indexOf("
):
0;
num=numss.toString().length()>
13?
numss.toString().substring(0,12+stratindex):
numss.toString();
flg=0;
publicbooleanonCreateOptionsMenu(Menumenu){
//Inflatethemenu;
thisaddsitemstotheactionbarifitispresent.
getMenuInflater().inflate(R.menu.main,menu);
returntrue;
}
3.4布局文件XML的详细设计
布局文件main.xml编写布局代码如下:
<
GridLayoutxmlns:
android="
xmlns:
tools="
android:
layout_width="
match_parent"
layout_height="
wrap_content"
layout_marginTop="
10px"
columnCount="
5"
rowCount="
6"
background="
@drawable/js"
id="
@+id/gly"
tools:
context="
.MainActivity"
>
<
EditText
@+id/print"
60px"
layout_columnSpan="
layout_marginLeft="
2px"
layout_marginRight="
layout_row="
textColor="
#ff0000"
textSize="
55px"
gravity="
right"
#eee"
/>
Button
@+id/cleargo"
120px"
layout_column="
layout_gravity="
top"
1"
text="
《--"
/>
@+id/clear"
3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)