基于Android计算器功能的实现

合集下载

基于Android的雷达遮蔽角计算器设计

基于Android的雷达遮蔽角计算器设计

件 界 面和 遮 蔽角计 算 功 能的 实现 方 法。 实验 结 果表 明,软 件 安装 简单 , 易于使 用 ,大 大提 高 了遮 蔽角计 算 效 率,缩 短 了雷达 部 队 战斗 准备 时 间,对 提 升部 队打 赢 能力具有 现实意义。
2 . 1 软 件 界 面设 计
良好 的人机 交 互界 面 能够 提升 用户 的操 作体验 ,便于软件普及和 推广。为突 出软件 实 用性和 易用性 ,人机 界面 力求简洁 明了。通 过 前面 分析,计算遮蔽 角的参数主要有 3个 ,可
件 , 以提 高遮 蔽 角 计 算 效 率 。
2 . 2按钮点击 事件
软 件 的 主 要 功 能 是 实 现 公 式 的 求 解 计 算 , 通 过 点 击 Bu t o n控 件 开 始 执 行 主 程 序 , 即 响 应 按 钮 点 击 事 件 。在 r e s / l a y o u t / a c t i v i t y
其实 就是 一个形 如 x x x ( Vi e w s o u r c e 1的方法 的 方法名 ,这 样直接就在界面布 局文件 中为指定 控件绑 定了事件处理方法 。同时在该界面布局
对 应 的 Ma i n Ac t i v i t y . j a v a文 件 中 定 义 一 个 v o i d c l i c k Ha n l e r ( Vi e w s o u r c e ) 方 法 , 该 方 法 将 会 处 理 该 按 钮 上 的 点 击 事 件 。关 键 代 码 如 下 :
遮 蔽角 作 为雷 达阵 地地 形 条件 技术 指标
重 要 内容 之 一 , 是 测 算 雷 达 探 测 盲 区 的 基 础 。
局 把 全 部 控 件 按 照 行 、 列 方 式 排 列 , 以 完 成 整 体布局 。

基于安卓的计算器的设计与实现

基于安卓的计算器的设计与实现

基于安卓的计算器的设计与实现在设计和实现基于安卓的计算器时,需要考虑以下几个重要的方面:用户界面设计、计算逻辑实现和功能扩展。

首先,用户界面设计是一个计算器的重要组成部分。

一个简洁直观、易于使用的界面可以提供良好的用户体验。

可以考虑使用标准计算器的布局,包括数字键盘、运算符按钮和显示结果的文本框。

此外,还可以添加一些额外的功能,比如一键清除按钮、括号按钮和科学计算模式切换按钮等。

考虑到不同屏幕尺寸和定制化需求,应该使用相对布局或者网格布局来放置UI元素。

其次,计算逻辑实现是计算器的核心部分。

需要支持基本的四则运算,包括加法、减法、乘法和除法。

为了实现连续运算和操作优先级,可以使用栈或者逆波兰表示法。

在用户输入数字和运算符时,应该及时更新显示结果的文本框。

另外,还应该考虑异常情况的处理,比如除数为零的情况。

最后,功能扩展是一个好的设计的关键。

除了基本的四则运算,还可以考虑添加一些其他功能,比如开方、求平方、取余、倒数、阶乘等。

另外,还可以添加一个历史记录功能,记录用户的计算过程和结果,方便用户查看和回顾。

此外,还可以添加一个单位转换功能,支持常见的长度、重量、温度、时间、速度等单位之间的转换。

在实际开发中,可以使用Android Studio作为开发工具。

Android Studio提供了丰富的界面设计工具和模拟器,可以方便地进行界面布局和调试。

可以使用Java语言进行开发,使用Android提供的API来处理用户输入和展示结果。

在代码实现中,可以使用按钮点击事件来处理用户输入。

当用户点击数字按钮时,将所点击的数字添加到一个临时变量中,当用户点击运算符按钮时,将临时变量中的数字和运算符添加到运算式中,并清空临时变量。

当用户点击等号按钮时,根据运算式中的数字和运算符进行实际的计算,并将结果显示在结果文本框中。

当用户点击清空按钮时,将运算式和结果文本框清空。

除了基本逻辑实现外,还可以进行一些优化和改进。

在Android Studio中开发一个简单的计算器应用

在Android Studio中开发一个简单的计算器应用

在Android Studio中开发一个简单的计算器应用随着智能手机的普及,计算器应用成为了人们生活中不可或缺的工具之一。

为了满足用户的需求,我们决定在Android Studio中开发一个简单的计算器应用。

这个应用将提供基本的四则运算功能,并且界面简洁易用。

首先,在Android Studio中创建一个新的项目。

选择合适的应用名称和包名。

接下来,我们需要设计应用的用户界面。

我们希望用户界面简洁明了,方便用户使用。

可以考虑使用一个TextView显示计算结果,以及多个Button用于输入数字和操作符。

在开发计算器的过程中,我们需要处理用户的输入并进行相应的计算。

为此,我们可以使用一个EditText控件来接收用户的输入,并通过按钮的点击事件来获取用户点击的数字和操作符。

然后,我们可以使用Java中的数学库来进行四则运算,并将结果显示在TextView中。

通过Android Studio提供的布局编辑器,我们可以轻松地将TextView和Button布局在界面上。

可以使用LinearLayout或RelativeLayout进行布局,根据需要设置各个控件之间的位置和大小。

此外,还可以设置按钮的点击事件,使其能够响应用户的输入。

在处理用户输入时,需要考虑一些特殊情况。

例如,当用户输入非法字符或进行除法时需要进行错误处理。

可以通过在代码中添加条件判断语句来实现这些功能。

另外,还可以添加一些额外的功能,如清除输入、撤销操作等,以提升用户体验。

在开发过程中,可以使用Android Studio提供的调试工具来检查代码是否正常运行。

可以设置断点,逐步执行代码,并查看变量的值。

这些工具能够帮助我们快速定位和修复错误。

为了使应用具有良好的用户体验,我们还可以添加一些动画效果和过渡效果。

例如,当用户点击按钮时,可以添加按钮缩放、淡入淡出等动画效果,使界面更加生动有趣。

除了基本功能以外,我们还可以考虑添加更多的功能来完善应用。

android应用开发编程题

android应用开发编程题

android应用开发编程题Android应用开发已经成为现代技术领域中必须具备的技能之一。

通过编写Android应用程序,开发人员可以创造出功能丰富的移动应用,满足用户需求,提高用户体验。

下面是几个关于Android应用开发的编程题,通过解答这些题目,可以加深对Android开发的理解和掌握。

1. 编写一个Android应用程序,实现一个简单的计算器功能。

用户可以输入两个数字和一个运算符(+、-、*、/),应用程序可以计算出结果并显示在屏幕上。

2. 编写一个Android应用程序,实现一个简单的音乐播放器。

用户可以选择音乐文件并进行播放、暂停、停止等操作。

同时,应用程序还应该显示音乐的播放进度和提供拖动进度条的功能。

3. 编写一个Android应用程序,实现一个笔记本应用。

用户可以输入标题和内容,并将笔记保存在应用程序中。

可以通过标题查找笔记,并可以对笔记进行编辑和删除操作。

4. 编写一个Android应用程序,实现一个天气预报应用。

用户可以输入城市名,应用程序可以获取该城市的天气信息并显示在屏幕上。

需要使用网络请求获取天气数据,并使用合适的布局方式展示天气信息。

5. 编写一个Android应用程序,实现一个简单的图片浏览器。

用户可以从相册中选择图片,并可以进行放大、缩小、旋转等操作。

同时,应用程序还应该提供图片的分享功能。

6. 编写一个Android应用程序,实现一个即时消息应用。

用户可以注册账号,并与其他用户进行实时聊天。

应用程序应该能够接收和发送文本消息,并显示聊天记录。

以上这些编程题旨在练习Android应用开发的各种基本技能,包括UI设计、用户输入处理、数据存储、网络请求等。

在完成这些编程题的过程中,可以通过查阅Android开发文档、参考相关教程、搜索解决方案等方式提高自己的技能水平。

总结起来,通过解答上述的Android应用开发编程题,可以加深对Android开发的理解和掌握。

通过实践和不断地学习,可以逐渐提高自己的编程能力,成为一名优秀的Android开发者。

制作一个简易计算器——基于AndroidStudio实现

制作一个简易计算器——基于AndroidStudio实现

制作⼀个简易计算器——基于AndroidStudio实现⼀个计算器Android程序的源码部分分为主⼲和细节两部分。

⼀、主⼲1. 主⼲的构成计算器的布局事件(即计算器上的按钮、⽂本框)监听实现计算2. 详细解释 假设我们的项⽬名为Calculator,⽽布局名称(Layout Name)为默认的activity_main 。

即设置如下图所⽰: 在这种前提下,有:设置计算器布局的⽂件:Calculator/app/src/main/res/layout/activity_main.xml事件监听和计算实现在同⼀个⽂件⾥:Calculator/app/src/main/java/下的⼀个⼦⽬录⾥的MainActivity.java 即如下图所⽰:计算器布局代码(写在activity_main.xml⽂件⾥):1<?xml version="1.0" encoding="utf-8"?>2<ScrollView xmlns:android="/apk/res/android"3 android:layout_width="fill_parent"4 android:layout_height="wrap_content"5>6<LinearLayout7android:layout_width="fill_parent"8 android:layout_height="fill_parent"9 android:orientation="vertical">10<EditText11android:id="@+id/input"12 android:layout_width="fill_parent"13 android:layout_height="wrap_content"14 android:layout_gravity="center"15 android:editable="false"16 android:hint="@string/shuru"/>1718<EditText19android:id="@+id/output"20 android:layout_width="fill_parent"21 android:layout_height="wrap_content"22 android:layout_gravity="center"23 android:editable="true"24 android:gravity="right"25 android:hint="@string/shuchu"/>2627<RelativeLayout28android:layout_width="fill_parent"29 android:layout_height="wrap_content">3031<Button32android:id="@+id/seven"33 android:layout_width="80dp"34 android:layout_height="70dp"35 android:layout_alignParentLeft="true"36 android:text="@string/seven"37 android:textSize="40sp"/>3839<Button44 android:text="@string/eight"45 android:textSize="40sp"/>4647<Button48android:id="@+id/nine"49 android:layout_width="80dp"50 android:layout_height="70dp"51 android:layout_toRightOf="@id/eight"52 android:text="@string/nine"53 android:textSize="40sp"/>5455<Button56android:id="@+id/add"57 android:layout_width="80dp"58 android:layout_height="70dp"59 android:layout_alignParentRight="true"60 android:layout_toRightOf="@id/nine"61 android:text="@string/add"62 android:textSize="40sp"/>6364<Button65android:id="@+id/four"66 android:layout_width="80dp"67 android:layout_height="70dp"68 android:layout_alignParentLeft="true"69 android:layout_below="@id/seven"70 android:text="@string/four"71 android:textSize="40sp"/>7273<Button74android:id="@+id/five"75 android:layout_width="80dp"76 android:layout_height="70dp"77 android:layout_below="@id/eight"78 android:layout_toRightOf="@id/four"79 android:text="@string/five"80 android:textSize="40sp"/>8182<Button83android:id="@+id/six"84 android:layout_width="80dp"85 android:layout_height="70dp"86 android:layout_below="@id/nine"87 android:layout_toRightOf="@id/five"88 android:text="@string/six"89 android:textSize="40sp"/>9091<Button92android:id="@+id/subtract"93 android:layout_width="80dp"94 android:layout_height="70dp"95 android:layout_alignParentRight="true"96 android:layout_below="@id/add"97 android:layout_toRightOf="@id/six"98 android:text="@string/subtract"99 android:textSize="40sp"/>100101<Button102android:id="@+id/one"103 android:layout_width="80dp"104 android:layout_height="70dp"105 android:layout_alignParentLeft="true" 106 android:layout_below="@id/four"107 android:text="@string/one"108 android:textSize="40sp"/>109110<Button111android:id="@+id/two"112 android:layout_width="80dp"113 android:layout_height="70dp"114 android:layout_below="@id/five"115 android:layout_toRightOf="@id/one" 116 android:text="@string/two"117 android:textSize="40sp"/>118119<Button120android:id="@+id/three"121 android:layout_width="80dp"122 android:layout_height="70dp"123 android:layout_below="@id/six"128<Button129android:id="@+id/multiply"130 android:layout_width="80dp"131 android:layout_height="70dp"132 android:layout_alignParentRight="true" 133 android:layout_below="@id/subtract" 134 android:layout_toRightOf="@id/three" 135 android:text="@string/multiply"136 android:textSize="40sp"/>137138<Button139android:id="@+id/zero"140 android:layout_width="80dp"141 android:layout_height="70dp"142 android:layout_alignParentLeft="true" 143 android:layout_below="@id/one"144 android:text="@string/zero"145 android:textSize="40sp"/>146147<Button148android:id="@+id/clear"149 android:layout_width="80dp"150 android:layout_height="70dp"151 android:layout_below="@id/two"152 android:layout_toRightOf="@id/zero" 153 android:text="@string/clear"154 android:textSize="40sp"/>155156<Button157android:id="@+id/result"158 android:layout_width="80dp"159 android:layout_height="70dp"160 android:layout_below="@id/three"161 android:layout_toRightOf="@id/clear" 162 android:text="@string/result"163 android:textSize="40sp"/>164165<Button166android:id="@+id/divide"167 android:layout_width="80dp"168 android:layout_height="70dp"169 android:layout_alignParentRight="true" 170 android:layout_below="@id/multiply" 171 android:layout_toRightOf="@id/result" 172 android:text="@string/divide"173 android:textSize="40sp"/>174175<Button176android:id="@+id/dot"177 android:layout_width="80dp"178 android:layout_height="70dp"179 android:layout_alignParentLeft="true" 180 android:layout_below="@id/zero"181 android:text="@string/dot"182 android:textSize="40sp"/>183<Button184android:id="@+id/writeButton"185 android:layout_width="wrap_content" 186 android:layout_height="wrap_content" 187 android:layout_alignParentLeft="true" 188 android:layout_below="@id/dot"189 android:text="@string/write"190 android:textSize="40sp"/>191<Button192android:id="@+id/readButton"193 android:layout_width="wrap_content" 194 android:layout_height="wrap_content" 195 android:layout_alignParentRight="true" 196 android:layout_below="@id/dot"197 android:text="@string/read"198 android:textSize="40sp"/>199200<CheckBox201android:id="@+id/appendBox"202 android:text="@string/appendBox"203 android:layout_width="wrap_content" 204 android:layout_height="wrap_content" 205 android:layout_alignParentBottom="true" 206 android:layout_toLeftOf="@+id/divide" 207 android:layout_toStartOf="@+id/divide"212213<EditText214215android:layout_width="match_parent"216 android:layout_height="wrap_content"217 android:id="@+id/textView"/>218219<EditText220221android:layout_width="match_parent"222 android:layout_height="wrap_content"223 android:id="@+id/displayView"/>224225<EditText226android:id="@+id/errorzero"227 android:layout_width="fill_parent"228 android:layout_height="wrap_content"229 android:layout_gravity="center"230 android:editable="false"231 android:gravity="center"232/>233<EditText234android:id="@+id/resultText"235 android:layout_width="fill_parent"236 android:layout_height="wrap_content"237 android:layout_gravity="center"238 android:editable="false"239 android:gravity="left"240 android:text="@string/resultText"241/>242</LinearLayout>243</ScrollView>View Code事件监听和实现计算代码(写在MainActivity.java⽂件⾥)1package com.example.lenovo.calculator;2345import android.app.Activity;6import android.content.Context;7import android.os.Bundle;8import android.view.View;9import android.view.View.OnClickListener;10import android.widget.Button;11import android.widget.CheckBox;12import android.widget.EditText;1314import java.io.FileInputStream;15import java.io.FileNotFoundException;16import java.io.FileOutputStream;17import java.io.IOException;1819public class MainActivity extends Activity {20/**21 * Called when the activity is first created.22*/23private EditText output = null;24private EditText input = null;25private Button btn0 = null;26private Button btn1 = null;27private Button btn2 = null;28private Button btn3 = null;29private Button btn4 = null;30private Button btn5 = null;31private Button btn6 = null;32private Button btn7 = null;33private Button btn8 = null;34private Button btn9 = null;35private Button btnadd = null;36private Button btnsubtract = null;37private Button btnmultiply = null;38private Button btndivide = null;39private Button btnclear = null;40private Button btnresult = null;41private Button btndot = null;46private Button writeButton = null;47private Button readButton = null;48private CheckBox appendBox = null;49private EditText textView = null;50private EditText displayView = null;51public String FILE_NAME = "fileDemo.txt";525354private String str = "";//保存数字55private String strold = "";//原数字56private char act = ' ';//记录“加减乘除等于”符号57private int count = 0;//判断要计算的次数,如果超过⼀个符号,先算出来⼀部分58private Float result = null;//计算的输出结果59private Boolean errBoolean = false;//有错误的时候为true,⽆错为false60private Boolean flagBoolean = false;//⼀个标志,如果为true,可以响应运算消息,如果为false,不响应运算消息,只有前⾯是数字才可以响应运算消息 61private Boolean flagDot = false; //⼩数点标志位62636465 @Override66public void onCreate(Bundle savedInstanceState) {67super.onCreate(savedInstanceState);68 setContentView(yout.activity_main);6970 output = (EditText) findViewById(R.id.output);71 input = (EditText) findViewById(R.id.input);7273 errorzero = (EditText) findViewById(R.id.errorzero);74 resultText = (EditText) findViewById(R.id.resultText);75 writeButton = (Button) findViewById(R.id.writeButton);76 readButton = (Button) findViewById(R.id.readButton);77 textView = (EditText) findViewById(R.id.textView);78 displayView = (EditText) findViewById(R.id.displayView);79 appendBox = (CheckBox) findViewById(R.id.appendBox);8081 btn0 = (Button) findViewById(R.id.zero);82 btn1 = (Button) findViewById(R.id.one);83 btn2 = (Button) findViewById(R.id.two);84 btn3 = (Button) findViewById(R.id.three);85 btn4 = (Button) findViewById(R.id.four);86 btn5 = (Button) findViewById(R.id.five);87 btn6 = (Button) findViewById(R.id.six);88 btn7 = (Button) findViewById(R.id.seven);89 btn8 = (Button) findViewById(R.id.eight);90 btn9 = (Button) findViewById(R.id.nine);91 btnadd = (Button) findViewById(R.id.add);92 btnsubtract = (Button) findViewById(R.id.subtract);93 btnmultiply = (Button) findViewById(R.id.multiply);94 btndivide = (Button) findViewById(R.id.divide);95 btnclear = (Button) findViewById(R.id.clear);96 btnresult = (Button) findViewById(R.id.result);97 btndot = (Button) findViewById(R.id.dot);98//设置按钮侦听事件99 btn0.setOnClickListener(listener);100 btn1.setOnClickListener(listener);101 btn2.setOnClickListener(listener);102 btn3.setOnClickListener(listener);103 btn4.setOnClickListener(listener);104 btn5.setOnClickListener(listener);105 btn6.setOnClickListener(listener);106 btn7.setOnClickListener(listener);107 btn8.setOnClickListener(listener);108 btn9.setOnClickListener(listener);109//执⾏运算110 btnadd.setOnClickListener(listener);111 btnsubtract.setOnClickListener(listener);112 btnmultiply.setOnClickListener(listener);113 btndivide.setOnClickListener(listener);114 btnclear.setOnClickListener(listener);115 btnresult.setOnClickListener(listener);116117 btndot.setOnClickListener(listener);118119 writeButton.setOnClickListener(writelistener);120 readButton.setOnClickListener(readlistener);121122123// ATTENTION: This was auto-generated to implement the App Indexing API.124// See https://g.co/AppIndexing/AndroidStudio for more information.125 }130public void onClick(View v) {131// TODO Auto-generated method stub132switch (v.getId()) {133//输⼊数字134case R.id.zero:135 num(0);136break;137case R.id.one:138 num(1);139break;140case R.id.two:141 num(2);142break;143case R.id.three:144 num(3);145break;146case R.id.four:147 num(4);148break;149case R.id.five:150 num(5);151break;152case R.id.six:153 num(6);154break;155case R.id.seven:156 num(7);157break;158case R.id.eight:159 num(8);160break;161case R.id.nine:162 num(9);163break;164165case R.id.dot:166 dot();167break;168//执⾏运算169case R.id.add:170 add();171break;172case R.id.subtract:173 sub();174break;175case R.id.multiply:176 multiply();177break;178case R.id.divide:179 divide();180break;181case R.id.clear:182 clear();183break;184//计算结果185case R.id.result:186 result();187if (!errBoolean && flagBoolean) {188 output.setText(String.valueOf(result));189 }190 resultText.setText(strold + act + str + "=" + result+" "); 191break;192193default:194break;195196 }197 input.setText(strold + act + str);198 output.setText(String.valueOf(result));199200201 }202 };203204private OnClickListener writelistener = new OnClickListener() {205 @Override206public void onClick(View view) {207//textView.setText("");208209 FileOutputStream fos = null;214 fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE); 215 }216 String text = resultText.getText().toString();217 fos.write(text.getBytes());218 textView.setText("⽂件写⼊成功,写⼊长度:" + text.length()); 219//resultText.setText("");220221 } catch (FileNotFoundException e) {222 e.printStackTrace();223 } catch (IOException e) {224 e.printStackTrace();225 }226finally {227if (fos != null)228try {229 fos.flush();230 fos.close();231 } catch (IOException e) {232 e.printStackTrace();233 }234 }235 }236 };237private OnClickListener readlistener = new OnClickListener() {238 @Override239public void onClick(View view) {240241 displayView.setText("");242 FileInputStream fis = null;243try {244 fis = openFileInput(FILE_NAME);245if (fis.available() == 0) {246return;247 }248byte[] readBytes = new byte[fis.available()];249while (fis.read(readBytes) != -1) {250251 }252 String text = new String(readBytes);253 displayView.setText(text);254 textView.setText("⽂件读取成功,写⼊长度:" + text.length()); 255256 } catch (FileNotFoundException e) {257 e.printStackTrace();258 } catch (IOException e) {259 e.printStackTrace();260 }261262 }263 };264265private void dot() {266// TODO Auto-generated method stub267268if (!flagDot) {269 str = str + ".";270 flagBoolean = false;271 flagDot = true;272 }273 }274275private void clear() {276// TODO Auto-generated method stub277 str = strold = "";278 count = 0;279 act = ' ';280 result = null;281 flagBoolean = false;282 flagDot = false;283 input.setText(strold + act + str);284 output.setText("");285 errorzero.setText("");286 displayView.setText("");287 textView.setText("");288 resultText.setText("");289 }290291private void divide() {292// TODO Auto-generated method stub293if (flagBoolean) {299300private void multiply() {301// TODO Auto-generated method stub 302if (flagBoolean) {303 check();304 act = '*';305 flagBoolean = false;306 }307 }308309private void sub() {310// TODO Auto-generated method stub 311if (flagBoolean) {312 check();313 act = '-';314 flagBoolean = false;315 }316 }317318private void add() {319// TODO Auto-generated method stub 320if (flagBoolean) {321 check();322 act = '+';323 flagBoolean = false;324 }325 }326327private void check() {328// TODO Auto-generated method stub 329if (count >= 1) {330 result();331 str = String.valueOf(result);332 }333 strold = str;334 str = "";335 count++;336 flagDot = false;337 errorzero.setText("");338 }339340//计算输出结果341private void result() {342// TODO Auto-generated method stub 343if (flagBoolean) {344 Float a, b;345346 a = Float.parseFloat(strold);347 b = Float.parseFloat(str);348349if (b == 0 && act == '/') {350 clear();351 errorzero.setText("除数不能为零!"); 352//output.setText("除数不能为零!"); 353354355//errBoolean=true;356 }357358359if (!errBoolean) {360switch (act) {361case '+':362 result = a + b;363break;364case '-':365 result = a - b;366break;367case '*':368 result = a * b;369break;370case '/':371 result = a / b;372break;373374default:375break;376 }377 }383private void num(int i) {384// TODO Auto-generated method stub385 str = str + String.valueOf(i);386 flagBoolean = true;387 errorzero.setText("");388 }389390 }View Code⼆、细节 仅仅将主⼲部分代码copy下来并不能运⾏程序,因为主⼲代码调⽤了⼀些⽂件的代码,这些⽂件就是我们所说的细节。

Android:实现一个计算器--(四则运算)

Android:实现一个计算器--(四则运算)

Android :实现⼀个计算器--(四则运算)计算器的功能介绍:Dot 的效果展⽰:侃侃 Dot:改进的地⽅:不⾜的地⽅:补充知识:android 中的事件处理步骤如何将信息显⽰到 View(EditText)上:异常的类型:Name: Dot (从某点开始,到某点结束)功能: + 、- 、* 、/ 、%(清零,退格操作)版本:1.0Dot 与其他的计算器相⽐没有太⼤的竞争⼒,甚⾄在处理⼀些极端的问题时还存在很⼤的不⾜,例如:⼤数的四则运算,对于这个问题处理的还不够到位,⽬前只能实现⼀些简单的四则运算(只能说⾃⼰的⽔平太菜,还没有掌握⼀些实质性的内容,这个是⾃⼰需要检讨的)另外:⾮常感谢 Android ⽼师教给我们的知识,使我们可以设计出第⼀款属于⾃⼰的 app.相对于最原始的设计,更新了哪些东西呢?1、改变按钮的形状,由原始的长⽅形 -- 椭圆状,使得按钮更加形象化。

2、增加背景图⽚,使⽤户的体验效果更好。

3、增加退格操作,使得⽤户在输错信息时不⽤全盘清零,可以删除刚刚写的某个字符。

1、未实现⼀些⼤数的运算。

2、当退格退完后,再按退格时会⾃动退出(不影响总体效果,但还是有那么⼀点 bug )3、⽬前两个数操作就需要 '=' ⼀下,但是可以实现多项式的运算,只是每次都需要 '='(后续会进⾏修改,逐渐完善)a 、找到事件⽬标对象(Button),通过 findViewById(),遍历⼦对象。

b 、实现view.onClickLisenter 接⼝,重写 onClick ⽅法。

c 、在事件⽬标对象上注册,btn.setOnClickListener (实现类的对象)a 、为 EditText 定义 id -- etResultb 、通过 findViewById 获取 etResult 对象c 、通过 etResult.setText() 将信息显⽰到计算器界⾯上a 、RuntimeExceptiona、RuntimeException运⾏时异常,不要求处理(但最好处理⼀下),与业务相关,⽐较主观(每个应⽤都可以采⽤⾃⼰的⽅式进⾏处理),⼀般不严重, 对效果不会产⽣太⼤的影响。

Android简单计算器课程设计

Android简单计算器课程设计

Android简单计算器课程设计广东工业大学华立学院课程名称手机游戏开发题目名称简单计算器学生学部,系, 机电与信息工程学部专业班级 12计算机科学与技术2班学号学生姓名任课教师2015年 6月 20日一、课程考试,设计,的内容基于Android平台的简单计算器二、课程考试,设计,的要求清晰描述应用的策略和基本框架~并设计相关的类~描述各个类的作用和关系~画出类图关系~叙述使用到的技术点。

目录1课程综述 .............................................. 错误~未定义书签。

2 手机应用设计.......................................... 错误~未定义书签。

2.1 开发背景...................................................................... ........................................................................ 错误~未定义书签。

2.2 设计思想...................................................................... ........................................................................ 错误~未定义书签。

2.3 策略描述.............................................................................................................................................. 错误~未定义书签。

2.4 设计将达到的目标 ..................................................................... ....................................................... 错误~未定义书签。

Android平台BMI计算的设计与实现

Android平台BMI计算的设计与实现

Android平台BMI测试精灵课设课程设计的题目Android平台BMI指数计算器的设计与实现<第一章> 需求分析<一> 任务概述BMI程序中需要主界面, 各种其他界面, 所以要很好的将各个界面的连接, 可以从点击按钮连接, 也可以用手势连接下一个界面。

对于音乐图片的选择要能结合用户, 和审美的观念。

尽量做出的界面美观, 让用户能很好的使用。

对于按钮的使用, 如果能了解按钮的各种参数, 也能将一个界面设计的很漂亮首先必须了解, JAVA是面向对象的编程语言, 所以掌握好Java的基本语句是很重要的。

1清楚掌握基本数据类型, 在BMI中因为是大量处理各种类型的数据, 所以对数据类型的变量要求比较高。

2掌握JAVA画图函数的使用;3要掌握android的布局函数;4掌握android的debug调试功能的应用, 能够及时排除错误。

5 要能将java知识和android必要知识有机的结合;根据以上调查分析, 可以给出其现行业务流程图<二>功能需求经过以上详细的用户调查, 在现行业务流程和数据分析的基础上, 基本可以确定系统设计必须达到的目标。

以下是BMI必须具备的功能:1.计算BMI值并存储计算结果及计算日期;2.根据计算所得BMI值给用户称赞或警告提示(动画或音频、图片), 并给出相应的建议;向用户图形化展示指定时间段内用户BMI值得变化情况, 可以采用折线图或柱状图展示;<三>性能需求为了保证系统能够稳定、可靠的运行, BMI应该满足以下的性能需求:1.处理的准确性和及时性处理的准确性和及时性是BMI的必要性能。

在系统设计和开发过程中, 要充分考虑系统当前和将来可能承受的工作量, 使系统的处理能力和响应时间能够满足用户对信息处理的需求。

2.要能加入音乐以及动画效果音乐和动画对一款Android软件是必须的, 能让用户不仅有视觉的体验, 更要有听觉的体验, 让用户能喜欢。

(完整版)基于Android计算器的设计与应用毕业论文

(完整版)基于Android计算器的设计与应用毕业论文

(完整版)基于Android计算器的设计与应⽤毕业论⽂北京北⼤⽅正软件技术学院毕业设计(论⽂)题⽬:基于Android计算器的设计与应⽤系别:软件⼯程分院专业:软件技术学号:姓名:王可可指导⽼师:李强完成⽇期:2014年5 ⽉20 ⽇北京北⼤⽅正软件技术学院毕业设计(论⽂)成绩评定表(理科)年级 11级专业软件技术姓名王可可学号论⽂题⽬:基于Android计算器的设计与应⽤指导教师:李强项⽬评分标准优秀良好合格不合格选题优秀:选题有重要理论意义和实际价值;良好:选题有较强理论意义和实际价值;合格:选题有⼀定理论意义和实际价值;不合格:选题⽋妥。

基础知识优秀:有坚实的理论基础和系统深⼊的专业知识;良好:有较坚实的理论基础和系统深⼊的专业知识;合格:有⼀定的理论基础和专业知识;不合格:基础理论不够全⾯,专业知识不系统。

实践能⼒优秀:体现出较强的实践⼯作能⼒;良好:体现出较好的实践⼯作能⼒;合格:体现出⼀定的实践⼯作能⼒;不合格:体现出⼯作能⼒较差。

写作能⼒优秀:条理清楚,层次分明,⽂笔流畅,学风严谨;良好:条理性好,层次分明,⽂字通顺,⼯作认真;合格:条理较好,层次较分明,⽂字较通顺;不合格:条理不清,写作较差。

论⽂综合评价优秀良好合格不合格指导教师评定意见签字:年⽉⽇毕业设计领导⼩组签字签字:年⽉⽇摘要⽬前⼿机可以说是普及率⾮常⾼的电⼦设备了,由于其便于携带,使⽤⽅便,资费适中等等原因,现在⼿机已经在⼀定程度开始代替固定电话的通话功能,以及⼀些原来电脑软件上的功能了。

⼿机上的软件也随着⼿机的发展变得丰富起来了,时⾄今⽇已经出现了很多专门制作⼿机软件的公司,虽然制作的多是游戏软件,但是⼀些辅助性的⼯具软件也有了很多。

⼿机软件简单说就是可以安装在⼿机上的软件,作⽤⾃然是扩展⼿机的原始功能,使⼿机变得更加的实⽤。

但是⼿机的软件需要安装到相应的系统中才能完美的运⾏。

正是由于考虑到以上这些情况,Android系统是现今⽐较流⾏的⼿机系统,所以本系统选择了java语⾔来作为开发语⾔。

《Android基础》基于Android的简易计算机的设计与实现

《Android基础》基于Android的简易计算机的设计与实现
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnClickListener{
btMul=(Button) findViewById(R.id.btMul);
btDivide=(Button) findViewById(R.id.btDivide);
btEqu=(Button) findViewById(R.id.btEqu);
btClear=(Button) findViewById(R.id.btClear);
btSix=(Button) indViewById(R.id.btSix);
btSeven=(Button) findViewById(R.id.btSeven);
btEight=(Button) findViewById(R.id.btEight);
btNine=(Button) findViewById(R.id.btNine);
btDivide.setOnClickListener(this);
btEqu.setOnClickListener(this);
btClear.setOnClickListener(this);
btDel.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {

计算器Android版源码

计算器Android版源码

100%运行通过这是自己编写的,通过eclipse运行简易计算器Android版(源码)这是自己整理得,欢迎大家下载说明:每完成一次计算后,需先clear 清除记忆,当然也可以连算XML布局<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android=android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TableLayoutandroid:id="@+id/tableLayout1"android:layout_width="match_parent"android:layout_height="wrap_content"android:collapseColumns="4"><TableRowandroid:id="@+id/tableRow_et"android:layout_width="fill_parent"android:layout_height="fill_parent"><EditTextandroid:id="@+id/et"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_span="4"android:focusable="false"android:singleLine="true"android:inputType="text"android:gravity="right"></EditText></TableRow><TableRowandroid:id="@+id/tableRow1"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_7"android:layout_width="40px"android:layout_height="40px"android:text="7"/><Buttonandroid:id="@+id/bt_8"android:layout_width="40px"android:layout_height="40px"android:text="8"/><Buttonandroid:id="@+id/bt_9"android:layout_width="40px"android:layout_height="40px"android:text="9"/><Buttonandroid:id="@+id/bt_back"android:layout_width="40px"android:layout_height="40px"android:text="back"/></TableRow><TableRowandroid:id="@+id/tableRow2"android:layout_width="fill_parent"android:layout_height="fill_parent"> <Buttonandroid:id="@+id/bt_4"android:layout_width="40px"android:layout_height="40px"android:text="4"/><Buttonandroid:id="@+id/bt_5"android:layout_width="40px"android:layout_height="40px"android:text="5"/><Buttonandroid:id="@+id/bt_6"android:layout_width="40px"android:layout_height="40px"android:text="6"/><Buttonandroid:id="@+id/bt_divide"android:layout_width="40px"android:layout_height="40px"android:text="/"/></TableRow><TableRowandroid:id="@+id/tableRow3"android:layout_width="fill_parent"android:layout_height="fill_parent"> <Buttonandroid:id="@+id/bt_1"android:layout_width="40px"android:layout_height="40px"android:text="1"/><Buttonandroid:id="@+id/bt_2"android:layout_width="40px"android:layout_height="40px"android:text="2"/><Buttonandroid:id="@+id/bt_3"android:layout_width="40px"android:layout_height="40px"android:text="3"/><Buttonandroid:id="@+id/bt_multiply"android:layout_width="40px"android:layout_height="40px"android:text="*"/></TableRow><TableRowandroid:id="@+id/tableRow4"android:layout_width="fill_parent"android:layout_height="fill_parent"> <Buttonandroid:id="@+id/bt_0"android:layout_width="50px"android:layout_height="40px"android:text="0"/><Buttonandroid:id="@+id/bt_point"android:layout_width="50px"android:layout_height="40px"android:text="."/><Buttonandroid:id="@+id/bt_add"android:layout_width="50px"android:layout_height="40px"android:text="+"/><Buttonandroid:id="@+id/bt_sub"android:layout_width="50px"android:layout_height="40px"android:text="-"/></TableRow><TableRowandroid:id="@+id/tableRow4"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_equal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_span="3"android:text="="/><Buttonandroid:id="@+id/bt_clear"android:layout_width="50px"android:layout_height="40px"android:text="clear"/></TableRow></TableLayout></LinearLayout>源代码:package android.sdk;importimportimportimportimportimportimportpublic class Android_calculatorActivity extends Activity {private Button bt_1;private Button bt_2;private Button bt_3;private Button bt_4;private Button bt_5;private Button bt_6;private Button bt_7;private Button bt_8;private Button bt_9;private Button bt_0;private Button bt_add;private Button bt_sub; // 减private Button bt_multiply; // 乘private Button bt_divide; // 除private Button bt_back;private Button bt_equal; // 等于private Button bt_point; // 点private Button bt_clear; // 清除private EditText et_play; // 显示private String str_oper = "+"; // 运算符private StringBuffer str_display = new StringBuffer();; // 显示private String str_result; // 结果显示private double num1;private double num2;private boolean flag = true; // 小数点个数开关控制;private boolean b_sub, b_mul, b_div; // 运算符开关控制@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.main);bt_0 = (Button) findViewById(R.id.bt_0);bt_1 = (Button) findViewById(R.id.bt_1);bt_2 = (Button) findViewById(R.id.bt_2);bt_3 = (Button) findViewById(R.id.bt_3);bt_4 = (Button) findViewById(R.id.bt_4);bt_5 = (Button) findViewById(R.id.bt_5);bt_6 = (Button) findViewById(R.id.bt_6);bt_7 = (Button) findViewById(R.id.bt_7);bt_8 = (Button) findViewById(R.id.bt_8);bt_9 = (Button) findViewById(R.id.bt_9);bt_add = (Button) findViewById(R.id.bt_add);bt_sub = (Button) findViewById(R.id.bt_sub);bt_multiply = (Button) findViewById(R.id.bt_multiply);bt_divide = (Button) findViewById(R.id.bt_divide);bt_back = (Button) findViewById(R.id.bt_back);bt_equal = (Button) findViewById(R.id.bt_equal);bt_point = (Button) findViewById(R.id.bt_point);bt_clear = (Button) findViewById(R.id.bt_clear);et_play = (EditText) findViewById(R.id.et);et_play.setText("0.0");bt_0.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){}});bt_1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("1");et_play.setText(str_display.toString());}});bt_2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("2");et_play.setText(str_display.toString());}});bt_3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("3");et_play.setText(str_display.toString());}});bt_4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("4");et_play.setText(str_display.toString());}});bt_5.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){}});bt_6.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("6");et_play.setText(str_display.toString());}});bt_7.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("7");et_play.setText(str_display.toString());}});bt_8.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("8");et_play.setText(str_display.toString());}});bt_9.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("9");et_play.setText(str_display.toString());}});bt_point.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){if (flag){str_display.append(".");flag = false;}}});bt_back.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (str_display.length() != 0){str_display.deleteCharAt(str_display.length() - 1);et_play.setText(str_display.toString());}}});bt_add.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "+";if (!(str_display.toString() == "")){num1 += Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));flag = true;}});bt_sub.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "-";if (!b_sub && !(str_display.toString() == "")){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer("");b_sub = true;} else{if (!(str_display.toString() == "")){num1 -= Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_multiply.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "*";if (!b_mul && !(str_display.toString() == "")){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer("");b_mul = true;} else{if (!(str_display.toString() == "")){num1 *= Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_divide.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "/";if (!b_div && !(str_display.toString() == "")){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer("");b_div = true;} else{if (!(str_display.toString() == "")){if (Double.parseDouble(str_display.toString()) == 0){Toast.makeText(Android_calculatorActivity.this,"除数不能为0!", Toast.LENGTH_LONG).show();} else{num1 /= Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_clear.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "+";str_display = new StringBuffer("");str_result = null;num1 = 0;num2 = 0;flag = true;b_sub = false;b_mul = false;b_div = false;et_play.setText("0.0");}});bt_equal.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (str_oper.equals("+")){num2 = Double.parseDouble(str_display.toString());str_result = String.valueOf((num1 + num2));et_play.setText(str_result);str_display = new StringBuffer("");}if (str_oper.equals("-")){num2 = Double.parseDouble(str_display.toString());str_result = String.valueOf((num1 - num2));et_play.setText(str_result);str_display = new StringBuffer("");}if (str_oper.equals("*")){num2 = Double.parseDouble(str_display.toString());str_result = String.valueOf((num1 * num2));et_play.setText(str_result);str_display = new StringBuffer("");}if (str_oper.equals("/")){num2 = Double.parseDouble(str_display.toString());if (!(num2 == 0)){str_result = String.valueOf((num1 / num2));et_play.setText(str_result);} else{Toast.makeText(Android_calculatorActivity.this,"除数不能为0!", Toast.LENGTH_LONG).show();}str_display = new StringBuffer("");}}});}。

android开发计算器设计开发报告

android开发计算器设计开发报告

a n d r o i d开发计算器设计开发报告Revised by Petrel at 2021《安卓开发》程序设计报告题目简单计算器开发专业(班级)网工111班姓名张波波学号指导教师赵(老师)日期2014.5.7目录一、设计说明: (4)1.设计内容:Android简单应用程序开发,简单计算器。

(4)2程序说明: (4)二、开发环境: (4)三、概要设计: (4)3.1系统的总体 (4)四、程序流程和系统功能设计 (5)4.1程序流程设计 (5)4.2.系统功能设计 (6)4.3基于Android平台系统具体设计 (6)4.3.1总体模块详细设计 (6)4.3.2输入模块详细设计 (6)4.3.3显示模块详细设计 (7)4.3.4计算模块详细设计 (7)五、计算器系统实现 (8)5.1Android应用程序构成 (8)六、截图说明 (9)1、图标 (9)2界面 (9)3运算界面 (9)4错误输入 (9)5设计平台界面 (9)6签名导出apk (9)七、总结 (9)课程设计任务书一、设计说明:1.设计内容:Android简单应用程序开发,简单计算器。

2程序说明:1、计算器界面友好,方便使用。

2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。

3、能够判断用户输入运算数是否正确。

4、4、支持小数运算。

5、具有退格功能,能够删除最后一个输入,ce。

6、具有清除功能,删除所有,c。

7、具有结果存储功能,能够显示存储器状态,支持触屏手机。

8、9、支持最低版本2.0,最高版本4.4。

开发时为4.2二、开发环境:开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT作为开发平台。

事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。

三、概要设计:3.1系统的总体整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。

【精品】基于Android平台的手机应用软件设计与实现毕业论文设计

【精品】基于Android平台的手机应用软件设计与实现毕业论文设计

(此文档为word格式,下载后您可任意编辑修改!)安阳工学院计算机科学与工程学院JAVA程序设计课程综合项目报告项目题目:基于Android平台的手机应用软件设计与实现专业班级:计算机科学与技术(信息技术)11-1学生姓名:吕鹏学生学号:201103010042指导教师姓名:许研2013年12月摘要随着IT技术的发展,移动开发已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。

而在移动开发中,Android开发近些年来突飞猛进的发展,在智能手机领域中的市场份额以及超过80%。

同样,基于安卓平台的手机应用开发也达到前所未有的高度,各种安卓手机应用软件竞相出现。

本次的JAVA 课程设计将基于安卓的平台,因为安卓开发主要基于JAVA语言和XML语言。

本次所做的手机应用软件,可实现系统的登录、计算器、打电话、发短信、上网等简单功能实现。

在此系统的实现过程中不仅提高了JAVA语言编程,而且加入了Android的成分,提高了软件设计的兴趣性。

关键词:手机应用软件开发,Java程序设计语言,Android开发。

目录摘要 (2)第1章系统目标 (4)第2章系统功能介绍 (4)2.1系统功能总框图 (5)2.2 模块功能介绍 (5)2.2.1 登录模块功能介绍 (5)2.2.2 等待模块功能介绍 (6)2.2.3系统主界面模块功能介绍 (7)2.2.4短信和拨号模块功能介绍 (7)2.2.5计算器模块功能介绍 (8)2.2.6网上冲浪模块功能介绍 (9)第三章系统功能实现 (10)3.1 系统登录模块设计 (10)3.1.1 登录框布局设计 (10)3.1.2 登录对话框设计 (12)3.2 等待模块设计 (14)3.3 系统主界面模块设计 (15)3.3.1 主界面XML布局设计 (15)3.3.2 主界面背景图片设计 (17)3.3.3 主界面功能实现设计 (17)3.4 短信和拨号模块设计 (19)3.4.1短信功能实现设计 (19)3.4.2 拨号功能实现设计 (21)3.5 计算器模块设计 (21)3.5.1 计算器界面设计 (21)3.5.2 计算器功能实现设计 (21)3.6 网上冲浪模块设计 (23)3.6.1 网上冲浪模块XML布局设计 (23)3.6.2 网上冲浪功能设计 (24)第四章系统设计总结 (27)参考文献 (28)第1章系统目标实现简单的手机界面操作,包括密码登陆,多个Activity的界面切换和调用,包括等待界面、主界面、发短信界面、拨号界面、计算器界面、音乐播放器、视频播放器、网上冲浪等界面。

Android中使用GridLayout网格布局来制作简单的计算器App

Android中使用GridLayout网格布局来制作简单的计算器App

Android中使⽤GridLayout⽹格布局来制作简单的计算器App关于GridLayout在android4.0版本之前,如果想要达到⽹格布局的效果,⾸先可以考虑使⽤最常见的LinearLayout布局,但是这样的排布会产⽣如下⼏点问题:1、不能同时在X,Y轴⽅向上进⾏控件的对齐。

2、当多层布局嵌套时会有性能问题。

3、不能稳定地⽀持⼀些⽀持⾃由编辑布局的⼯具。

其次考虑使⽤表格布局TabelLayout,这种⽅式会把包含的元素以⾏和列的形式进⾏排列,每⾏为⼀个TableRow对象,也可以是⼀个View对象,⽽在TableRow中还可以继续添加其他的控件,每添加⼀个⼦控件就成为⼀列。

但是使⽤这种布局可能会出现不能将控件占据多个⾏或列的问题,⽽且渲染速度也不能得到很好的保证。

android4.0以上版本出现的GridLayout布局解决了以上问题。

GridLayout布局使⽤虚细线将布局划分为⾏、列和单元格,也⽀持⼀个控件在⾏、列上都有交错排列。

⽽GridLayout使⽤的其实是跟LinearLayout类似的API,只不过是修改了⼀下相关的标签⽽已,所以对于开发者来说,掌握GridLayout还是很容易的事情。

GridLayout的布局策略简单分为以下三个部分:⾸先它与LinearLayout布局⼀样,也分为⽔平和垂直两种⽅式,默认是⽔平布局,⼀个控件挨着⼀个控件从左到右依次排列,但是通过指定android:columnCount设置列数的属性后,控件会⾃动换⾏进⾏排列。

另⼀⽅⾯,对于GridLayout布局中的⼦控件,默认按照wrap_content的⽅式设置其显⽰,这只需要在GridLayout布局中显式声明即可。

其次,若要指定某控件显⽰在固定的⾏或列,只需设置该⼦控件的android:layout_row和android:layout_column属性即可,但是需要注意:android:layout_row=”0”表⽰从第⼀⾏开始,android:layout_column=”0”表⽰从第⼀列开始,这与编程语⾔中⼀维数组的赋值情况类似。

基于android的计算器毕业设计报告

基于android的计算器毕业设计报告

基于android的计算器毕业设计报告1. 引言计算器是一种常用的电子设备,用于进行各种数学计算和运算,如加减乘除、平方根、百分比等。

随着智能手机的普及,人们越来越倾向于使用手机上的计算器应用进行数学计算,因此开发一款基于Android平台的计算器应用成为一项有意义的毕业设计。

2. 设计目标本计算器应用的设计目标是满足用户对于高效、准确计算需求的同时,具备友好的用户界面和良好的用户体验。

3. 功能设计3.1 基本计算功能用户可以通过输入数字和运算符,进行基本的加减乘除运算。

计算器应能正确解析用户输入的表达式,并给出准确的结果。

3.2 科学计算功能计算器还应该具备科学计算功能,如平方根、立方根、指数运算、对数运算等。

用户可以通过在界面上选择相应的按钮进行科学计算。

3.3 历史记录功能计算器应能保存用户的历史计算记录,以便用户可以回顾之前的计算过程和结果。

用户可以随时查看特定的历史记录,并可以清除历史记录。

3.4 单位转换功能计算器还应该具备单位转换功能,如长度单位之间的转换,重量单位之间的转换等。

用户可以在界面上选择需要进行的单位转换,并输入相应的数值,计算器将给出转换后的结果。

4. 用户界面设计4.1 主界面主界面应该简洁清晰,并具备直观明了的操作按钮,供用户选择进行不同的计算。

4.2 科学计算界面科学计算界面应该设计为可选展示的,用户可以通过选择按钮在主界面和科学计算界面之间切换。

4.3 历史记录界面历史记录界面应该能够展示用户之前的计算过程和结果,并提供删除历史记录的功能。

4.4 单位转换界面单位转换界面应该设计为可选展示的,用户可以通过选择按钮在主界面和单位转换界面之间切换。

5. 开发技术和工具本计算器应用基于Android平台进行开发,开发工具可选用Android Studio。

开发语言选择Java,使用Android SDK进行开发。

设计界面可以使用XML或者Android布局进行设计。

android计算器源码

android计算器源码

这是我本人做的Android 简单计算器源代码。

可以实现普通四则运算2,10,16进制转换。

常见异常处理,可以实现activity屏幕跳转。

算法用逆波兰实现。

本项目所有代码不涉及任何知识产权问题,完全由自己学习android时候写的,所以各位可以放心下载。

AndroidManifest.xml代码<?xml version="1.0"encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="my.calu"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/meinv"android:label="@string/app_name"><activity android:name=".Main"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><categoryandroid:name="UNCHER"/></intent-filter></activity></application><uses-sdk android:minSdkVersion="4"/></manifest>//layout 代码<?xml version="1.0"encoding="utf-8"?><AbsoluteLayoutandroid:id="@+id/background"android:layout_width="fill_parent"android:layout_height="fill_parent"xmlns:android="/apk/res/android"><Buttonandroid:id="@+id/binary_sign"android:layout_width="73px"android:layout_height="52px"android:text="10/2"android:layout_x="14dp"android:layout_y="148dp"/><Buttonandroid:id="@+id/sexadecimal_sign"android:layout_width="73px"android:layout_height="52px"android:text="10/16"android:layout_x="88dp"android:layout_y="148dp"/><Buttonandroid:id="@+id/add_sign"android:layout_width="73px"android:layout_height="52px"android:text="+"android:layout_x="240dp"android:layout_y="382dp"/><EditTextandroid:id="@+id/editview"android:layout_width="295px"android:layout_height="76px"android:text=""android:textSize="18sp"android:layout_x="8dp"android:layout_y="14dp"/><Buttonandroid:id="@+id/number0"android:layout_width="73px"android:layout_height="52px"android:text="0"android:layout_x="89dp"android:layout_y="382dp"/> <Buttonandroid:id="@+id/point_sign"android:layout_width="73px"android:layout_height="52px"android:text="."android:layout_x="10dp"android:layout_y="382dp"/> <Buttonandroid:id="@+id/sub_sign"android:layout_width="73px"android:layout_height="52px"android:text="-"android:layout_x="240dp"android:layout_y="322dp"/> <Buttonandroid:id="@+id/mult_sign"android:layout_width="73px"android:layout_height="52px"android:text="*"android:layout_x="240dp"android:layout_y="262dp"/> <Buttonandroid:id="@+id/dev_sign"android:layout_width="73px"android:layout_height="52px"android:text="÷"android:layout_x="240dp"android:layout_y="202dp"/> <Buttonandroid:id="@+id/number3"android:layout_width="73px"android:layout_height="52px"android:text="3"android:layout_x="170dp"android:layout_y="322dp"/> <Buttonandroid:id="@+id/number6"android:layout_width="73px"android:layout_height="52px"android:text="6"android:layout_x="170dp"android:layout_y="262dp"/> <Buttonandroid:id="@+id/equal_sign"android:layout_width="73px"android:layout_height="52px"android:text="="android:layout_x="167dp"android:layout_y="382dp"/> <Buttonandroid:id="@+id/number1"android:layout_width="73px"android:layout_height="52px"android:text="1"android:layout_x="10dp"android:layout_y="322dp"/> <Buttonandroid:id="@+id/number5"android:layout_width="73px"android:layout_height="52px"android:text="5"android:layout_x="90dp"android:layout_y="262dp"/> <Buttonandroid:id="@+id/number4"android:layout_width="73px"android:layout_height="52px"android:text="4"android:layout_x="10dp"android:layout_y="262dp"/> <Buttonandroid:id="@+id/number9"android:layout_width="73px"android:layout_height="52px"android:text="9"android:layout_x="170dp"android:layout_y="202dp"/><Buttonandroid:id="@+id/number8"android:layout_width="73px"android:layout_height="52px"android:text="8"android:layout_x="90dp"android:layout_y="202dp"/><Buttonandroid:id="@+id/number7"android:layout_width="73px"android:layout_height="52px"android:text="7"android:layout_x="10dp"android:layout_y="202dp"/><Buttonandroid:id="@+id/number2"android:layout_width="73px"android:layout_height="52px"android:text="2"android:layout_x="90dp"android:layout_y="322dp"/><Buttonandroid:id="@+id/clear_sign"android:layout_width="138px"android:layout_height="wrap_content"android:text="C"android:layout_x="174dp"android:layout_y="148dp"/></AbsoluteLayout>主代码package my.calu;import java.util.ArrayList;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;//package expression;import java.util.ArrayList;import java.util.Stack;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main extends Activity implements OnClickListener {private static final char Str = 0;private Buttonnumber0,number1,number2,number3,number4,number5,number6,number7,numbe r8,number9;private Buttonbinary_sign,sexadecimal_sign,clear_sign,point_sign,add_sign,sub_sign, mult_sign,dev_sign,equal_sign;private EditText edittext;private String buffer="";private boolean first_is_number=false ,after_equal=false,flage_10zhijing=true,flage_16zhijing=true;//初始化事件public void init() {this.edittext=(EditText) findViewById(R.id.editview);this.edittext.setOnClickListener(this);this.number0=(Button) findViewById(R.id.number0);this.number0.setOnClickListener(this);this.number1=(Button) findViewById(R.id.number1);this.number1.setOnClickListener(this);this.number2=(Button) findViewById(R.id.number2);this.number2.setOnClickListener(this);this.number3=(Button) findViewById(R.id.number2);this.number0.setOnClickListener(this);this.number3=(Button) findViewById(R.id.number3);this.number3.setOnClickListener(this);this.number4=(Button) findViewById(R.id.number4);this.number4.setOnClickListener(this);this.number5=(Button) findViewById(R.id.number5);this.number5.setOnClickListener(this);this.number6=(Button) findViewById(R.id.number6);this.number6.setOnClickListener(this);this.number7=(Button) findViewById(R.id.number7);this.number7.setOnClickListener(this);this.number8=(Button) findViewById(R.id.number8);this.number8.setOnClickListener(this);this.number9=(Button) findViewById(R.id.number9);this.number9.setOnClickListener(this);this.point_sign=(Button) findViewById(R.id.point_sign);this.point_sign.setOnClickListener(this);this.equal_sign=(Button) findViewById(R.id.equal_sign);this.equal_sign.setOnClickListener(this);this.add_sign=(Button) findViewById(R.id.add_sign);this.add_sign.setOnClickListener(this);this.sub_sign=(Button) findViewById(R.id.sub_sign);this.sub_sign.setOnClickListener(this);this.mult_sign=(Button) findViewById(R.id.mult_sign);this.mult_sign.setOnClickListener(this);this.dev_sign=(Button) findViewById(R.id.dev_sign);this.dev_sign.setOnClickListener(this);this.clear_sign=(Button) findViewById(R.id.clear_sign);this.clear_sign.setOnClickListener(this);this.binary_sign=(Button) findViewById(R.id.binary_sign);this.binary_sign.setOnClickListener(this);this.sexadecimal_sign=(Button)findViewById(R.id.sexadecimal_sign);this.sexadecimal_sign.setOnClickListener(this);}//判断字符串是否为全为0-9的整形数public boolean is10Numeric(String str){Pattern pattern = pile("[0-9]*");Matcher isNum = pattern.matcher(str);if( !isNum.matches() ){return false;}return true;}//判断字符串是否为全为0-1的整形数public boolean is2Numeric(String str){Pattern pattern = pile("[0-1]*");Matcher isNum = pattern.matcher(str);if( !isNum.matches() ){return false;}return true;}//判断字符串是否为全为0-f的整形数public boolean is16Numeric(String str){Pattern pattern = pile("[0-f]*");Matcher isNum = pattern.matcher(str);if( !isNum.matches() ){return false;}return true;}//判断最后一位和第一位是否为数字public boolean isnumber ( String s) {int i=s.length();char c=s.charAt(i-1);char k=s.charAt(0);// System.out.println("---firstnumber--"+k);// System.out.println("---70c=charAt--"+c);if(s.equals(null)) {return false;}if((c >= '0' && c <= '9')&& (k >='0' && k <= '9') ){return true;}elsereturn false;}//判断是否有运算符public boolean have_signal(String s){after_equal=false;boolean have=s.contains("+");if(s.contains("+")||s.contains("-") || s.contains("*") || s.contains("/"))return true;elsereturn false;}//-------堆栈算法---------public void deal_equal (String s){// System.out.println("Hello World!");//中缀 => 后缀表达式SSSssss// String s = "8-3*5"; //中缀String S = ""; //后缀char[] Operators = new char[s.length()];int Top = -1;for (int i = 0; i < s.length(); i++){char C = s.charAt(i);// System.out.print(C);switch(C){case' ' :b reak;case'+' : //操作符case'-' :while (Top >= 0) //栈不为空时{char c = Operators[Top--]; //pop Operatorif (c == '('){Operators[++Top] = c; //push Operatorbreak;}else{S = S + c;}}O perators[++Top] = C; //push OperatorS += " ";break;case'*' : //操作符case'/' :w hile (Top >= 0) //栈不为空时{char c = Operators[Top--]; //pop Operatorif (c == '('){Operators[++Top] = c; //push Operatorbreak;}else{if (c == '+' || c == '-'){Operators[++Top] = c; //push Operatorbreak;}else{S = S + c;}}}O perators[++Top] = C; //push OperatorS += " ";b reak;case'(' : //操作符Operators[++Top] = C;S += " ";break;case')' : //操作符while (Top >= 0) //栈不为空时{char c = Operators[Top--]; //pop Operatorif (c == '('){break;}else{S = S + c;}}S += " ";break;default : //操作数S = S + C;break;}}while (Top >= 0){S = S + Operators[Top--]; //pop Operator}// System.out.print(Operators);// System.out.println(S); //后缀//后缀表达式计算double[] Operands = new double[S.length()];// System.out.println(S.length());double x, y, v;Top = - 1;String Operand = "";for (int i = 0; i < S.length(); i++){char c = S.charAt(i);if ((c >= '0' && c <= '9') || c == '.'){Operand += c;// System.out.print(Operand+" ");}if ((c == ' ' && Operand != "") || i == S.length()) {Operands[++Top] = ng.Double.parseDouble(Operand) ; //push OperandsOperand = "";}if (c == '+' || c == '-' || c == '*' || c == '/'){if ((Operand != "")){Operands[++Top] = ng.Double.parseDouble(Operand) ;//push Operands// System.out.println(Operators);Operand = "";}y = Operands[Top--]; //pop 双目运算符的第二操作数 (后进先出)注意操作数顺序对除法的影响x = Operands[Top--]; //pop 双目运算符的第一操作数switch (c){case'+' :v = x + y;break;case'-' :v = x - y;break;case'*' :v = x * y;break;case'/' :v = x / y; // 第一操作数 / 第二操作数注意操作数顺序对除法的影响break;default :v = 0;break;}Operands[++Top] = v; //push 中间结果再次入栈}}v = Operands[Top--]; //pop 最终结果// System.out.println("-------result-------"+v);String result=v+"";this.edittext.setText(result);}/** Called when the activity is first created. *///------------------函数入口--wangwei-------------//@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);this.init();//跳转// Intent intent=new Intent();//// Intent intent=TwoActivity.this.getlntent(); // Bundle bundle=intent.getExtras();// String name=bundle.getString(buffer);//}//触发事件后的动作// @Overridepublic void onClick(View v) {try {// TODO Auto-generated method stubif(v.getId()==this.number0.getId()) {buffer=buffer+0;this.edittext.setText(buffer);// first_is_number=true;}else if(v.getId()==this.number1.getId()) { buffer=buffer+1;this.edittext.setText(buffer);// first_is_number=true;}else if(v.getId()==this.number2.getId()) { buffer=buffer+2;this.edittext.setText(buffer);}else if(v.getId()==this.number3.getId()) { buffer=buffer+3;this.edittext.setText(buffer);// first_is_number=true;}else if(v.getId()==this.number4.getId()) { buffer=buffer+4;this.edittext.setText(buffer);// first_is_number=true;}else if(v.getId()==this.number5.getId()) { buffer=buffer+5;this.edittext.setText(buffer);}else if(v.getId()==this.number6.getId()) {buffer=buffer+6;this.edittext.setText(buffer);// first_is_number=true;}else if(v.getId()==this.number7.getId()) {buffer=buffer+7;this.edittext.setText(buffer);// first_is_number=true;}else if(v.getId()==this.number8.getId()) {buffer=buffer+8;this.edittext.setText(buffer);first_is_number=true;}else if(v.getId()==this.number9.getId()) {buffer=buffer+9;this.edittext.setText(buffer);// first_is_number=true;//---------------2进制的转换-----------}else if(v.getId()==this.binary_sign.getId()) { boolean is10=is10Numeric(buffer);boolean is2=is2Numeric(buffer);if(is10&&(flage_10zhijing==true)){int num=Integer.parseInt(buffer);flage_10zhijing=false;buffer=Integer.toBinaryString(num)+"" ;System.out.println("is10"+flage_10zhijing);}else if (is2&&(flage_10zhijing==false)){flage_10zhijing=true;buffer=Integer.valueOf(buffer,2).toString()+"" ;}else {//System.out.println(" 不是10进制也不是二进制");//buffer="0000000000";}this.edittext.setText(buffer);//----------------16进制的转换--------------}else if(v.getId()==this.sexadecimal_sign.getId()) { boolean is16=false,is10=false;is16=is16Numeric(buffer);is10=is10Numeric(buffer);System.out.println("is16 --- "+is16);System.out.println("flage_16zhijing"+flage_16zhijing);if(is10&&flage_16zhijing){int num=Integer.parseInt(buffer);flage_16zhijing=false;buffer=Integer.toHexString(num) +"" ;System.out.println("jinruis10 "+flage_16zhijing);}else if ((is16==true)&&(flage_16zhijing==false)){System.out.println("jinruis16 "+flage_16zhijing);flage_16zhijing=true;buffer=Integer.valueOf(buffer,16).toString() +"" ;//buffer="0000000000";}else {//System.out.println(" 不是16进制也不是1 0进制");//buffer="0000000000";}this.edittext.setText(buffer);//-------------四则运算-------------}else if(v.getId()==this.point_sign.getId()) {boolean isnumber;isnumber= isnumber ( buffer);if(isnumber)buffer=buffer+".";this.edittext.setText(buffer);}else if(v.getId()==this.sub_sign.getId()) {boolean isnumber;isnumber= isnumber ( buffer);if(isnumber)buffer=buffer+"-";this.edittext.setText(buffer);}else if(v.getId()==this.mult_sign.getId()) {boolean isnumber;isnumber= isnumber ( buffer);if(isnumber)buffer=buffer+"*";this.edittext.setText(buffer);}else if(v.getId()==this.dev_sign.getId()) {boolean isnumber;isnumber= isnumber ( buffer);if(isnumber)buffer=buffer+"/";this.edittext.setText(buffer);}else if(v.getId()==this.add_sign.getId()) {boolean isnumber;isnumber= isnumber ( buffer);if(isnumber){buffer=buffer+"+";this.edittext.setText(buffer);}else {//buffer="000000000000";this.edittext.setText(buffer);}//-------------------清除-------------------}else if(v.getId()==this.clear_sign.getId()) {// if(after_equal) {// int len=buffer.length();// if(len >=1) {// buffer= (String )buffer.subSequence(0, len-1); // }//// } else {// buffer="";// }buffer="";this.edittext.setText(buffer);//--------------计算结果------------------------}else if(v.getId()==this.equal_sign.getId()) {boolean isnumber;if(buffer.equals(null)) {buffer=" ";this.edittext.setText(buffer);}else {isnumber= isnumber ( buffer);boolean have_signal=have_signal(buffer);if(isnumber&&have_signal){after_equal=true;deal_equal(buffer);}}}} catch (Exception e) {// TODO: handle exception}// System.out.println("-----327------"+buffer);}}。

android计算器简单实现代码

android计算器简单实现代码

android计算器简单实现代码本⽂实例为⼤家分享了android计算器的具体实现代码,供⼤家参考,具体内容如下java代码:package com.itheima74.simplecalculator4;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.iflytek.cloud.InitListener;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechSynthesizer;import com.iflytek.cloud.SpeechUtility;import com.iflytek.cloud.SynthesizerListener;import com.iflytek.cloud.util.ResourceUtil;import java.util.ArrayList;/*** 简易计算器(第三版)* 功能介绍:* 1.⽀持连续计算* 2.⽀持离线语⾳* 3.科⼤讯飞在线(离线)语⾳合成SDK使⽤步骤:* a.下载SDK,注册APPID* b.拷贝libs⽬录下Msc.jar⾄⼯程libs⽬录,右键:add as library* c.创建assets⽬录,拷贝tts⽂件夹下3个离线发⾳⼈资源* d.创建jniLibs⽬录,拷贝armeabi⽂件夹,x86⽂件(视具体⼿机机型⽽定) * e.初始化SDK*/public class MainActivity extends AppCompatActivity implements View.OnClickListener {private TextView tv;// 显⽰控件private ArrayList<String> mList;// 存储⽤户输⼊集合private double mResult;// 计算结果,当除数为0时,⽆法计算结果,默认为初始值0private boolean mFlag = true;// 控制在线语⾳功能是否开启的变量,默认开启@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);initSDK();initView();initList();}/*** 2.初始化离线语⾳** @param flag 离线语⾳开启或关闭开关* @param msg 要朗读的⽂字*/private void initLocalHeCheng(boolean flag, String msg) {if (flag) {//1.创建SpeechSynthesizer对象,第⼆个参数:本地合成传InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, new InitListener() {@Overridepublic void onInit(int code) {}});//2.合成参数设置//设置引擎类型为本地mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);//设置本地发⾳⼈mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//加载本地合成资源,resPath为本地合成资源路径mTts.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());// 设置语速mTts.setParameter(SpeechConstant.SPEED, "60");// 设置⾳调mTts.setParameter(SpeechConstant.PITCH, "50");// 设置⾳量mTts.setParameter(SpeechConstant.VOLUME, "100");// 设置播放器⾳频流类型mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");//设置合成⾳频保存位置(可⾃定义保存位置),保存在“./sdcard/iflytek.pcm”//保存在SD卡需要在AndroidManifest.xml添加写SD卡权限//如果不需要保存合成⾳频,注释该⾏代码//mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");//3.开始合成mTts.startSpeaking(msg, mSynListener);}}// 获取发⾳⼈资源路径private String getResourcePath() {StringBuffer tempBuffer = new StringBuffer();// 合成通⽤资源tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, "tts/common.jet")); tempBuffer.append(";");// 发⾳⼈资源tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, "tts/xiaoyan.jet")); return tempBuffer.toString();}/*** 1.初始化SDK*/private void initSDK() {SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58ba4628");}// 创建⼀个选项菜单@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}// 处理选项菜单的点击事件@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.exit:this.finish();break;case R.id.open_local_voice:mFlag = true;mFlag = false;break;}return super.onOptionsItemSelected(item);}/*** 2.在线语⾳合成,朗读** @param flag 控制⽅法的执⾏,true:执⾏,false:不执⾏* @param msg 需要朗读的⽂字*//*private void initYuYinHeCheng(boolean flag, String msg) {if (flag) {//1.创建SpeechSynthesizer对象, 第⼆个参数:本地合成时传InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, null);//2.合成参数设置,详见《科⼤讯飞MSC API⼿册(Android)》SpeechSynthesizer 类mTts.setParameter(SpeechConstant.VOICE_NAME, mVoiceName);//设置发⾳⼈mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速mTts.setParameter(SpeechConstant.VOLUME, "80");//设置⾳量,范围0~100mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端//设置合成⾳频保存位置(可⾃定义保存位置),保存在“./sdcard/iflytek.pcm”//保存在SD卡需要在AndroidManifest.xml添加写SD卡权限//如果不需要保存合成⾳频,注释该⾏代码//mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");//3.开始合成mTts.startSpeaking(msg, mSynListener);}}*/// 合成监听器private SynthesizerListener mSynListener = new SynthesizerListener() {//开始播放@Overridepublic void onSpeakBegin() {}//缓冲进度回调//percent为缓冲进度0~100,beginPos为缓冲⾳频在⽂本中开始位置,endPos表⽰缓冲⾳频在⽂本中结束位置, //info为附加信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Android计算器功能的实现摘要随着移动通信技术和网络技术的迅速发展,手机系统发生了巨大的变化,从进行简单通话功能的非智能手机到现在集上网、聊天、收发邮件、视屏电话会议等各种服务于娱乐为一身的智能手机系统。

由Google公司牵头众多实力雄厚的软硬件厂商加盟成立了OMS联盟,并推出的Android平台手机系统。

作为时代的新生儿,Android手机操作平台有着得天独厚的优势广阔的发展前景。

本文正是基于Android平台开发的计算器。

论文主要阐述以面向对象的程序开发语言eclipse为开发工具, 设计并实现基于Android的计算器。

论文首先介绍了Android开发平台和环境以及Android 工程的重要部分,其次对计算器系统和程序进行了分析和设计,再次对计算器进行了系统的实现,并对系统进行了严格的验证,最后本文对所做工作进行了总结。

关键词:手机,Android,用户界面,计算器THE CALCULATOR FUNCTION REALIZATION BASEDON ANDROIDABSTRACTWith the development of mobile communication technology and network technology, great changes have taken place on the mobile phone system. The original mobile phone only has the functions of communication and Smartphone has the functions of internet, chat, video conferencing and other services and entertainment. Android mobile phone platform which was developed by Google Company and many equipment manufacturers of hardware and software vendors, as the era of neonatal has a unique advantage and prospects for development. This article is based on the Android platform calculator. The thesis describes object-oriented programming language eclipse development tools, design and implement a calculator based on the Android. The paper first introduces the Android development platform and environment as well as an important part of the Android project, followed by the calculator systems and procedures analysis and design, the realization of the system once again the calculator, and strict verification, Finally, a summary of the work done.Key words: mobile phone, Android, UI, calculator目录1 引言 (1)1.1 课题背景及意义 (1)1.1.1 课题背景 (1)1.1.2 课题意义 (1)1.2 智能手机平台系统 (2)1.3 课题来源 (3)2 基于Android平台计算器相关技术概述 (4)2.1 Android手机平台 (5)2.1.1 Android起源及优势 (5)2.1.2 Android体系结构 (5)2.1.3 Android平台功能特征 (7)2.2 Android SDK介绍 (9)2.3 XML技术 (10)2.4 JNI技术 (11)3 基于Android平台计算器设计 (12)3.1 系统的总体设计 (12)3.2 程序流程和系统功能设计 (13)3.2.1 程序流程设计 (13)3.2.2 系统功能设计 (14)3.3基于Android平台系统具体设计 (15)3.3.1 总体模块详细设计 (15)3.3.2 输入模块详细设计 (16)3.3.3 显示模块详细设计 (16)3.3.4 计算模块详细设计 (17)4 计算器系统实现 (18)4.1 Android应用程序构成 (18)4.2 Android应用系统文件结构 (19)4.3 构建Android应用程序用户界面 (21)4.3.1 Android应用程序界面组件 (21)4.3.2 Android应用系统界面组件 (22)4.3.3 Android用户界面的实现 (24)4.4 计算模块的实现 (28)4.5 计算器演示 (30)5 结论 (32)谢辞 (33)参考文献 (34)附录1: (36)附录2: (38)1 引言1.1 课题背景及意义1.1.1 课题背景随着社会的发展,经济水平的提高,手机越来越普及。

截止到2010年,中国手机用户数量将从2007年的5.40亿增长到7.38亿[1]。

同时伴随着移动互联网技术的发展,手机的功能也变得越来越丰富。

从原来只具有简单通信功能的非智能手机到现在具有手机操作系统,除通话功能以外,还集上网、聊天、炒股、收发邮件等功能于一身的智能手机系统。

智能手机[2]具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,并通过此类程序不断对手机的功能进行扩充,同时可通过移动通讯网络来实现无线网络接入。

智能手机同传统手机外观和操作方式类似,不仅包含触摸屏也包含非触摸屏、数字键盘手机和全尺寸键盘操作的手机。

但是传统手机都使用的是生产厂商自行开发的封闭式操作系统,所能实现的功能非常有限,不具备智能手机的扩展性。

从广义上讲,智能手机除了具备手机的通话功能外,还具备个人信息管理以及基于无线数据通信的浏览器、GPS(Global Positioning System)和电子邮件功能。

智能手机为用户提供了足够的屏幕尺寸和带宽,既方便随身携带,又为软件运行和内容服务提供个广阔的舞台,很多增值业务可以就此展开,如:股票、新闻、天气、交通、商品、应用程序下载、音乐图片下载等等。

结合3G通信网络的支持,智能手机的发展,势必将成为一个功能强大,集通话、短信、网络接入、影视娱乐为一体的综合性个人手持终端设备[3]。

1.1.2 课题意义随着通信技术的发展,3G从制定出到现在越来越被人们关注。

“3 G”(英语3rd-generation)或“三代”是第三代移动通信技术的简称,是指支持高速数据传输的蜂窝移动通信技术[4]。

目前3G存在四种标准:CDMA2000、WCDMATD-SCDMA、WiMAX。

其中TD-SCDMA (全称Time Division-Synchronous CDMA)是由中国大陆独自制定的3G标准。

为了推动我国的智能手机的发展,实现多功能的智能手机,方便人们丰富多彩而又快节奏的生活。

本文正是基于Android平台开发的计算机器。

论文主要阐述以面向对象的程序开发语言eclipse为开发工具, 基于智能手机Android之上设计一个计算器。

本文的目标就是设计并实现基于Android的计算器,论文首先介绍了Android开发平台和环境以及Android 工程的重要部分,然后着重针对计算器的系统设计和系统设计的具体实现,最后实现计算器的各种功能并得到了很多好的验证。

1.2 智能手机平台系统智能手机(Smartphone),是指“像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,通过此类程序来不断对手机的功能进行扩充,并可以通过移动通讯网络来实现无线网络接入的这样一类手机的总称”。

目前全球主要的只能手机操作系统依次是iPhone OS、Symbian、BlackBerry OS和Android,其中Android 最年轻,市场份额正迅速增加。

下面简单介绍Android以外的几款常用的智能手机系统。

IPhone OS是苹果公司专门为iPhone开发的智能手机系统[5]。

iPhone手机具有硬件与软件一一绑定的特性,Apple公司采用与运营商分成的策略。

iPhone虽然开放了SDK,可是却不能在PC上使用,这对于中国的应用开发市场是个不晓得阻碍。

但它将创新的移动电话、可触摸宽屏iPod以及具有桌面级电子邮件、网页浏览、搜索和地图功能的突破性因特网通信设备这三种产品完美的融合为一体的特性,也吸引了无数的用户。

Symbian(中文名:塞班)[6]是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,虽然在智能型手机市场取得了无比的成功,并长期居于首位,但是Symbian S60、Symbian3,UIQ等(尤其是S60)系统近两年亦遭遇到显著的发展瓶颈。

最近12个月欧洲手机公司诺基亚(Nokia)在智能手机市场市占率的滑落是不争的事实。

需要注意的是,并不是所有的Symbian系统都是智能系统,比如S40系统,就不属于智能手机系统。

BlackBerry OS[7]是RIM专用的智能手机操作系统。

BlackBerry,在美国市场占有率相对较高,BlackBerry的比较具有个性的设计就是宽大的屏幕和便于输入的QWERTY全键盘,所以BlackBerry在移动电子邮件方面非常方便,由于我国手机用户发送短信对于发送邮件,所以BlackBerry系统的邮件优势在中国不存在,目前BlackBerry OS在智能手机操作系统的市场份额占据第三位i,BlackBerry手机市场主要在美国[8]。

windows mobile是微软由于Pocket PC和Smartphone的软件平台[9]。

windows mobile 系统将大家熟悉的Windows桌面延伸到了移动设备中。

windows mobile是Microsoft为手持设备推出的“Windows移动版”。

受Android的冲击,目前Windows Mobile在智能手机操作系统的市场下降到4%左右。

Linux凭借其开放源代码、免费的优势,经过来自全球程序员的努力,再加上google、IBM等计算机巨头的支持。

相关文档
最新文档