您的位置:首页 > 移动开发 > Android开发

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>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: