Android开发应用实例:简单计算器+多点触控
2013-08-28 08:05
274 查看
这个例子是在一个简单的整型计算器应用了多点触控:一点触控是进行加法运算,两点触控是减法运算,三点触控是乘法运算,四点触控是除法运算。还添加了选项菜单,菜单上的内容有:退出,帮助,清空。
效果图:
具体的代码:
MainActivity.java
1. package com.lingdududu.test;
2.
3. import android.app.Activity;
4. import android.app.AlertDialog;
5. import android.os.Bundle;
6. import android.view.Menu;
7. import android.view.MenuItem;
8. import android.view.MotionEvent;
9. import android.widget.EditText;
10.
11. import android.widget.Toast;
12. /**
13. *
14. * @author lingdududu
15. * 这个程序主要是解决简单的整形的四则运算,用户在前两个EditText分别输入被除数,除数,
16. * 使用多点触控,一点触控是进行加法运算,两点触控是减法运算,
17. * 三点触控是乘法运算,四点触控是除法运算
18. * 触控之后在第三个EditText显示结果
19. */
20. public class MainActivity extends Activity {
21. //定义日志标签
22. private static final String Tag="System.out";
23. //菜单项ID常量
24. private static final int ITEM1 = Menu.FIRST;
25. private static final int ITEM2 = Menu.FIRST+1;
26. private static final int ITEM3 = Menu.FIRST+2;
27. private static EditText firstEtx,secondEtx,resultEtx;
28. //定义用户输入的两个数
29. int value1,value2;
30. String str;
31. @Override
32. public void onCreate(Bundle savedInstanceState) {
33. super.onCreate(savedInstanceState);
34. setContentView(R.layout.main);
35.
36. //通过findViewById方法获得EditText实例
37. firstEtx=(EditText)findViewById(R.id.text1);
38. secondEtx=(EditText)findViewById(R.id.text2);
39. resultEtx=(EditText)findViewById(R.id.text3);
40. //计算结果输出的EditText不可编辑
41. resultEtx.setFocusable(false);
42. }
43.
44. //选项菜单Option Menu
45. public boolean onCreateOptionsMenu(Menu menu) {
46. /*添加菜单项
47. * android.R使用的是系统自带的图标
48. */
49. menu.add(0, ITEM1, 0, "退出").setIcon(android.R.drawable.ic_lock_power_off);
50. menu.add(0, ITEM2, 0, "帮助").setIcon(android.R.drawable.ic_menu_help);
51. menu.add(0, ITEM3, 0, "清空").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
52. return true;
53. }
54.
55. //覆盖onOptionsItemSelected(MenuItem item)来响应菜单选项被单击事件
56. public boolean onOptionsItemSelected(MenuItem item) {
57. switch (item.getItemId()) {
58. //菜单项1被选择
59. case ITEM1:
60. //返回主界面
61. finish();
62. break;
63. //菜单项2被选择
64. case ITEM2:
65. //在对话框AlertDialog显示帮助信息
66. AlertDialog.Builder dialog = new AlertDialog.Builder(this);
67. dialog.setTitle("操作说明信息")
68. .setMessage(
69. " 用户在前两个EditText分别输入被除数,除数。一点触控是进行加法运算,两点触控是减法运算,三点触控是乘法运算,四点触控是除法运算。"
70. +"触摸屏幕后,在第三个EditText显示计算的结果,当离开屏幕的时候,显示结果的EditText被清空。"
71. +"点击Menu出现选项菜单,选择清空能清空EditText里面的数据,选择退出能退出程序,回到主界面")
72. .show();
73. break;
74. //菜单项3被选择
75. case ITEM3:
76. //清空EditText的数据
77. firstEtx.setText("");
78. secondEtx.setText("");
79. resultEtx.setText("");
80. break;
81. }
82. return true;
83. }
84.
85. public boolean onTouchEvent(MotionEvent event) {
86. // TODO Auto-generated method stub
87. //强制类型转换,将String类型转化成int类型
88. value1=Integer.parseInt(firstEtx.getText().toString());
89. value2=Integer.parseInt(secondEtx.getText().toString());
90.
91. //获取触控点的数量,比如2则可能是两个手指同时按压屏幕
92. int num=event.getPointerCount();
93. try {
94. if(event.getAction()==MotionEvent.ACTION_UP){
95. resultEtx.setText("");
96. }
97. //处理多点触控
98. else{
99. //一个手指按住屏幕,进行加法运算
100. if (num==1) {
101. str=String.valueOf(value1+value2);
102. //将计算到的结果添加到第三个EditText
103. resultEtx.setText(str);
104. }
105. else if (num==2) {
106. str=String.valueOf(value1-value2);
107. //将计算到的结果添加到第三个EditText
108. resultEtx.setText(str);
109. }
110. else if (num==3) {
111. str=String.valueOf(value1*value2);
112. //将计算到的结果添加到第三个EditText
113. resultEtx.setText(str);
114. }
115. else if (num==4) {
116. str=String.valueOf(value1/value2);
117. //将计算到的结果添加到第三个EditText
118. resultEtx.setText(str);
119. }
120. else {
121.
122. }
123. }
124. } catch (Exception e) {
125. //调用Toast显示出现异常的信息
126. Toast.makeText(MainActivity.this, "请检查你输入的除数是否正确",Toast.LENGTH_LONG).show();
127. }
128. return super.onTouchEvent(event);
129. }
130. }
main.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent"
6. >
7. <TextView
8. android:layout_width="fill_parent"
9. android:layout_height="wrap_content"
10. android:text="请输入被除数"
11. />
12. <EditText
13. android:id="@+id/text1"
14. android:inputType="number"
15. android:layout_width="fill_parent"
16. android:layout_height="wrap_content"
17. />
18. <TextView
19. android:layout_width="fill_parent"
20. android:layout_height="wrap_content"
21. android:text="请输入除数"
22. />
23. <EditText
24. android:id="@+id/text2"
25. android:inputType="number"
26. android:layout_width="fill_parent"
27. android:layout_height="wrap_content"
28. />
29. <TextView
30. android:layout_width="fill_parent"
31. android:layout_height="wrap_content"
32. android:text="计算的结果为"
33. />
34. <EditText
35. android:id="@+id/text3"
36. android:inputType="number"
37. android:layout_width="fill_parent"
38. android:layout_height="wrap_content"
39. />
40. <!-- <Button
41. android:layout_width="wrap_content"
42. android:layout_height="wrap_content"
43. android:id="@+id/button"
44. android:text="进行除法运算"
45. /> -->
46. </LinearLayout>
效果图:
具体的代码:
MainActivity.java
1. package com.lingdududu.test;
2.
3. import android.app.Activity;
4. import android.app.AlertDialog;
5. import android.os.Bundle;
6. import android.view.Menu;
7. import android.view.MenuItem;
8. import android.view.MotionEvent;
9. import android.widget.EditText;
10.
11. import android.widget.Toast;
12. /**
13. *
14. * @author lingdududu
15. * 这个程序主要是解决简单的整形的四则运算,用户在前两个EditText分别输入被除数,除数,
16. * 使用多点触控,一点触控是进行加法运算,两点触控是减法运算,
17. * 三点触控是乘法运算,四点触控是除法运算
18. * 触控之后在第三个EditText显示结果
19. */
20. public class MainActivity extends Activity {
21. //定义日志标签
22. private static final String Tag="System.out";
23. //菜单项ID常量
24. private static final int ITEM1 = Menu.FIRST;
25. private static final int ITEM2 = Menu.FIRST+1;
26. private static final int ITEM3 = Menu.FIRST+2;
27. private static EditText firstEtx,secondEtx,resultEtx;
28. //定义用户输入的两个数
29. int value1,value2;
30. String str;
31. @Override
32. public void onCreate(Bundle savedInstanceState) {
33. super.onCreate(savedInstanceState);
34. setContentView(R.layout.main);
35.
36. //通过findViewById方法获得EditText实例
37. firstEtx=(EditText)findViewById(R.id.text1);
38. secondEtx=(EditText)findViewById(R.id.text2);
39. resultEtx=(EditText)findViewById(R.id.text3);
40. //计算结果输出的EditText不可编辑
41. resultEtx.setFocusable(false);
42. }
43.
44. //选项菜单Option Menu
45. public boolean onCreateOptionsMenu(Menu menu) {
46. /*添加菜单项
47. * android.R使用的是系统自带的图标
48. */
49. menu.add(0, ITEM1, 0, "退出").setIcon(android.R.drawable.ic_lock_power_off);
50. menu.add(0, ITEM2, 0, "帮助").setIcon(android.R.drawable.ic_menu_help);
51. menu.add(0, ITEM3, 0, "清空").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
52. return true;
53. }
54.
55. //覆盖onOptionsItemSelected(MenuItem item)来响应菜单选项被单击事件
56. public boolean onOptionsItemSelected(MenuItem item) {
57. switch (item.getItemId()) {
58. //菜单项1被选择
59. case ITEM1:
60. //返回主界面
61. finish();
62. break;
63. //菜单项2被选择
64. case ITEM2:
65. //在对话框AlertDialog显示帮助信息
66. AlertDialog.Builder dialog = new AlertDialog.Builder(this);
67. dialog.setTitle("操作说明信息")
68. .setMessage(
69. " 用户在前两个EditText分别输入被除数,除数。一点触控是进行加法运算,两点触控是减法运算,三点触控是乘法运算,四点触控是除法运算。"
70. +"触摸屏幕后,在第三个EditText显示计算的结果,当离开屏幕的时候,显示结果的EditText被清空。"
71. +"点击Menu出现选项菜单,选择清空能清空EditText里面的数据,选择退出能退出程序,回到主界面")
72. .show();
73. break;
74. //菜单项3被选择
75. case ITEM3:
76. //清空EditText的数据
77. firstEtx.setText("");
78. secondEtx.setText("");
79. resultEtx.setText("");
80. break;
81. }
82. return true;
83. }
84.
85. public boolean onTouchEvent(MotionEvent event) {
86. // TODO Auto-generated method stub
87. //强制类型转换,将String类型转化成int类型
88. value1=Integer.parseInt(firstEtx.getText().toString());
89. value2=Integer.parseInt(secondEtx.getText().toString());
90.
91. //获取触控点的数量,比如2则可能是两个手指同时按压屏幕
92. int num=event.getPointerCount();
93. try {
94. if(event.getAction()==MotionEvent.ACTION_UP){
95. resultEtx.setText("");
96. }
97. //处理多点触控
98. else{
99. //一个手指按住屏幕,进行加法运算
100. if (num==1) {
101. str=String.valueOf(value1+value2);
102. //将计算到的结果添加到第三个EditText
103. resultEtx.setText(str);
104. }
105. else if (num==2) {
106. str=String.valueOf(value1-value2);
107. //将计算到的结果添加到第三个EditText
108. resultEtx.setText(str);
109. }
110. else if (num==3) {
111. str=String.valueOf(value1*value2);
112. //将计算到的结果添加到第三个EditText
113. resultEtx.setText(str);
114. }
115. else if (num==4) {
116. str=String.valueOf(value1/value2);
117. //将计算到的结果添加到第三个EditText
118. resultEtx.setText(str);
119. }
120. else {
121.
122. }
123. }
124. } catch (Exception e) {
125. //调用Toast显示出现异常的信息
126. Toast.makeText(MainActivity.this, "请检查你输入的除数是否正确",Toast.LENGTH_LONG).show();
127. }
128. return super.onTouchEvent(event);
129. }
130. }
main.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="fill_parent"
6. >
7. <TextView
8. android:layout_width="fill_parent"
9. android:layout_height="wrap_content"
10. android:text="请输入被除数"
11. />
12. <EditText
13. android:id="@+id/text1"
14. android:inputType="number"
15. android:layout_width="fill_parent"
16. android:layout_height="wrap_content"
17. />
18. <TextView
19. android:layout_width="fill_parent"
20. android:layout_height="wrap_content"
21. android:text="请输入除数"
22. />
23. <EditText
24. android:id="@+id/text2"
25. android:inputType="number"
26. android:layout_width="fill_parent"
27. android:layout_height="wrap_content"
28. />
29. <TextView
30. android:layout_width="fill_parent"
31. android:layout_height="wrap_content"
32. android:text="计算的结果为"
33. />
34. <EditText
35. android:id="@+id/text3"
36. android:inputType="number"
37. android:layout_width="fill_parent"
38. android:layout_height="wrap_content"
39. />
40. <!-- <Button
41. android:layout_width="wrap_content"
42. android:layout_height="wrap_content"
43. android:id="@+id/button"
44. android:text="进行除法运算"
45. /> -->
46. </LinearLayout>
相关文章推荐
- Android开发应用实例:简单计算器+多点触控
- 条件分支结构实例应用(简单计算器)
- Oracle FIRST_VALUE函数语法详解及应用实例
- c#正则表达式应用实例
- Selenium2学习-033-WebUI自动化实战实例-031-页面快照截图应用之二 -- 区域截图
- 友盟分享实例( 一)——在activity中的应用
- Apache DbUtils应用实例
- RHCE_LAB(6)RHEL5的LVM应用实例(LVM调整大小和删除)
- IFrame语法:IFrame实例应用集
- System.CodeDom详述及其应用实例
- Android深入浅出系列之实例应用—具有自动提示的菜单应用AutoCompleteTextView和ArrayAdapter的使用
- 安卓高级3 Android应用Design Support Library完全使用实例
- log4j-使用详解与Java的实例应用
- PHP-redis 模拟 新浪微博redis应用框架的实例
- C#多线程应用技术入门实例
- C# 反射应用实例-获取当前Color类的所有颜色
- java 自定义注解应用实例
- 正则表达式的应用实例通俗说明
- 新手上路:JDBC初级应用实例(一)
- HTML5开发Kinect体感游戏的实例应用