Android開發應用實例:簡單計算器+多點觸控 – Android移動開發技術文章_手機開發 Android移動開發教學課程

這個例子是在一個簡單的整型計算器應用瞭多點觸控:一點觸控是進行加法運算,兩點觸控是減法運算,三點觸控是乘法運算,四點觸控是除法運算。還添加瞭選項菜單,菜單上的內容有:退出,幫助,清空。
效果圖:


 
 具體的代碼:
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>
 
本文出自 “IT的點點滴滴” 博客

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *