Android入门--写一个最简单的计算器
2011年04月18日
这里将写的计算器是借用了下面写的计算器,并把其中需要注意的地方一一补充罗列:http://www.iteye.com/topic/141029
需要演示的结果:
之前假设已经配置好Android开发环境,如果没有,请参看下面2篇文章:
Win7 配置Android开发环境
http://www.cnblogs.com/ghj1976/archive/2011/04/15/ 2017292.html
ubuntu10.10 下安装android 2.2开发环境
http://www.cnblogs.com/ghj1976/archive/2011/04/02/ 2003847.html
第一步,新建项目
说明:
Project name:
在计算机中存储工程的目录名。
Application name:
应用的标题名字,我们在手机屏幕上显示应用的名字就是这个。
Package name:
Package name 是你的应用程序标示。当你开始准备在Android Market上发布你的应用程序的时候,Android用这个标识符精确地记录你的应用程序的更新过程,因此让包名唯一是非常重要的。尽管我们在这里使用了android.test这样的名字空间,对于真实的应用程序,你应该选择类似于com.你的公司名.你的应用程序名 这样的包名。
Create Activity:
Activity name(UI界面窗口的类名,从Activity继承而来)。
Min SDK Version
Min SDK Version 是你的Android程序所能运行得最早版本号。对于每个新发布的Android,SDK会增加并修改一些方法。通过选择一个版本号,Android(Android Market)会知道你的应用程序能运行在等于或晚于指定版本的设备之上。
注意,这里是SDK 的 API Level 数字,而不是 Platform ,比如我们最小运行在 Android 1.6 时, 我们这里应该是写 4 而不是 1.6。
二、准备工作
这里我们偷懒,使用beanshell来完成计算。http://www.beanshell.org/
这就需要我们下载对应的 jar 包
下载地址:http://www.beanshell.org/download.html
我们只需要下载:bsh-core 即: bsh-core-2.0b4.jar 这个文件
下载完成后,选择我们的项目,右键菜单中 “Build Path” 中选择 “Add External Archives” ,选择我们刚刚下载的 bsh-core-2.0b4.jar 文件。
三、代码与布局
布局文件 main.xml: 注意:
我们把EditText可输入的内容做了限制,只能输入跟计算和显示有关的一些字符。
代码文件 HelloWorldActivity.java : package ghj1976.HelloWorld; import bsh.EvalError; import bsh.Interpreter; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.EditText; public class HelloWorldActivity extends Activity { private static EditText et; private static Interpreter i = new Interpreter(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et = (EditText)findViewById(R.id.editText1); et.append("\n"); et.setSelection(et.length()); // 调整光标到最后一行 } @Override public boolean onKeyUp(int keyCode,KeyEvent event) { // 判断是否输入了回车 if(keyCode == KeyEvent.KEYCODE_ENTER) { String input = et.getText().toString(); // 这里用偷懒的方式取用户最后一行输入 String lastLine = input.substring(input.lastIndexOf("\n",input.lengt h() - 2)); et.append("\t\t"); et.append(eval(lastLine)+"\n"); et.setSelection(et.length()); } return true; } // 用 beanshell 偷懒来做算式计算 private Object eval(String input) { try { return i.eval(input); } catch(EvalError e) { return e.getMessage(); } } }
说明:
这里我们偷懒取最后一行用户输入的这里没有做必要的校验,如果多个回车可能会导致计算不出来数据。
四、在模拟器实验
如果还没有配置好模拟器,点击运行时会提示你配置模拟器
在 Window
2011年04月18日
这里将写的计算器是借用了下面写的计算器,并把其中需要注意的地方一一补充罗列:http://www.iteye.com/topic/141029
需要演示的结果:
之前假设已经配置好Android开发环境,如果没有,请参看下面2篇文章:
Win7 配置Android开发环境
http://www.cnblogs.com/ghj1976/archive/2011/04/15/ 2017292.html
ubuntu10.10 下安装android 2.2开发环境
http://www.cnblogs.com/ghj1976/archive/2011/04/02/ 2003847.html
第一步,新建项目
说明:
Project name:
在计算机中存储工程的目录名。
Application name:
应用的标题名字,我们在手机屏幕上显示应用的名字就是这个。
Package name:
Package name 是你的应用程序标示。当你开始准备在Android Market上发布你的应用程序的时候,Android用这个标识符精确地记录你的应用程序的更新过程,因此让包名唯一是非常重要的。尽管我们在这里使用了android.test这样的名字空间,对于真实的应用程序,你应该选择类似于com.你的公司名.你的应用程序名 这样的包名。
Create Activity:
Activity name(UI界面窗口的类名,从Activity继承而来)。
Min SDK Version
Min SDK Version 是你的Android程序所能运行得最早版本号。对于每个新发布的Android,SDK会增加并修改一些方法。通过选择一个版本号,Android(Android Market)会知道你的应用程序能运行在等于或晚于指定版本的设备之上。
注意,这里是SDK 的 API Level 数字,而不是 Platform ,比如我们最小运行在 Android 1.6 时, 我们这里应该是写 4 而不是 1.6。
二、准备工作
这里我们偷懒,使用beanshell来完成计算。http://www.beanshell.org/
这就需要我们下载对应的 jar 包
下载地址:http://www.beanshell.org/download.html
我们只需要下载:bsh-core 即: bsh-core-2.0b4.jar 这个文件
下载完成后,选择我们的项目,右键菜单中 “Build Path” 中选择 “Add External Archives” ,选择我们刚刚下载的 bsh-core-2.0b4.jar 文件。
三、代码与布局
布局文件 main.xml: 注意:
我们把EditText可输入的内容做了限制,只能输入跟计算和显示有关的一些字符。
代码文件 HelloWorldActivity.java : package ghj1976.HelloWorld; import bsh.EvalError; import bsh.Interpreter; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.EditText; public class HelloWorldActivity extends Activity { private static EditText et; private static Interpreter i = new Interpreter(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et = (EditText)findViewById(R.id.editText1); et.append("\n"); et.setSelection(et.length()); // 调整光标到最后一行 } @Override public boolean onKeyUp(int keyCode,KeyEvent event) { // 判断是否输入了回车 if(keyCode == KeyEvent.KEYCODE_ENTER) { String input = et.getText().toString(); // 这里用偷懒的方式取用户最后一行输入 String lastLine = input.substring(input.lastIndexOf("\n",input.lengt h() - 2)); et.append("\t\t"); et.append(eval(lastLine)+"\n"); et.setSelection(et.length()); } return true; } // 用 beanshell 偷懒来做算式计算 private Object eval(String input) { try { return i.eval(input); } catch(EvalError e) { return e.getMessage(); } } }
说明:
这里我们偷懒取最后一行用户输入的这里没有做必要的校验,如果多个回车可能会导致计算不出来数据。
四、在模拟器实验
如果还没有配置好模拟器,点击运行时会提示你配置模拟器
在 Window