歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發應用實例:簡單計算器+多點觸控

Android開發應用實例:簡單計算器+多點觸控

日期:2017/3/1 10:36:33   编辑:Linux編程

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

效果圖:

650) this.width=650;" height=430>

具體的代碼:

MainActivity.java

  1. package com.lingdududu.test;
  2. import Android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import android.view.MotionEvent;
  8. import android.widget.EditText;
  9. import android.widget.Toast;
  10. /**
  11. *
  12. * @author lingdududu
  13. * 這個程序主要是解決簡單的整形的四則運算,用戶在前兩個EditText分別輸入被除數,除數,
  14. * 使用多點觸控,一點觸控是進行加法運算,兩點觸控是減法運算,
  15. * 三點觸控是乘法運算,四點觸控是除法運算
  16. * 觸控之後在第三個EditText顯示結果
  17. */
  18. public class MainActivity extends Activity {
  19. //定義日志標簽
  20. private static final String Tag="System.out";
  21. //菜單項ID常量
  22. private static final int ITEM1 = Menu.FIRST;
  23. private static final int ITEM2 = Menu.FIRST+1;
  24. private static final int ITEM3 = Menu.FIRST+2;
  25. private static EditText firstEtx,secondEtx,resultEtx;
  26. //定義用戶輸入的兩個數
  27. int value1,value2;
  28. String str;
  29. @Override
  30. public void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.main);
  33. //通過findViewById方法獲得EditText實例
  34. firstEtx=(EditText)findViewById(R.id.text1);
  35. secondEtx=(EditText)findViewById(R.id.text2);
  36. resultEtx=(EditText)findViewById(R.id.text3);
  37. //計算結果輸出的EditText不可編輯
  38. resultEtx.setFocusable(false);
  39. }
  40. //選項菜單Option Menu
  41. public boolean onCreateOptionsMenu(Menu menu) {
  42. /*添加菜單項
  43. * android.R使用的是系統自帶的圖標
  44. */
  45. menu.add(0, ITEM1, 0, "退出").setIcon(android.R.drawable.ic_lock_power_off);
  46. menu.add(0, ITEM2, 0, "幫助").setIcon(android.R.drawable.ic_menu_help);
  47. menu.add(0, ITEM3, 0, "清空").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
  48. return true;
  49. }
  50. //覆蓋onOptionsItemSelected(MenuItem item)來響應菜單選項被單擊事件
  51. public boolean onOptionsItemSelected(MenuItem item) {
  52. switch (item.getItemId()) {
  53. //菜單項1被選擇
  54. case ITEM1:
  55. //返回主界面
  56. finish();
  57. break;
  58. //菜單項2被選擇
  59. case ITEM2:
  60. //在對話框AlertDialog顯示幫助信息
  61. AlertDialog.Builder dialog = new AlertDialog.Builder(this);
  62. dialog.setTitle("操作說明信息")
  63. .setMessage(
  64. " 用戶在前兩個EditText分別輸入被除數,除數。一點觸控是進行加法運算,兩點觸控是減法運算,三點觸控是乘法運算,四點觸控是除法運算。"
  65. +"觸摸屏幕後,在第三個EditText顯示計算的結果,當離開屏幕的時候,顯示結果的EditText被清空。"
  66. +"點擊Menu出現選項菜單,選擇清空能清空EditText裡面的數據,選擇退出能退出程序,回到主界面")
  67. .show();
  68. break;
  69. //菜單項3被選擇
  70. case ITEM3:
  71. //清空EditText的數據
  72. firstEtx.setText("");
  73. secondEtx.setText("");
  74. resultEtx.setText("");
  75. break;
  76. }
  77. return true;
  78. }
  79. public boolean onTouchEvent(MotionEvent event) {
  80. // TODO Auto-generated method stub
  81. //強制類型轉換,將String類型轉化成int類型
  82. value1=Integer.parseInt(firstEtx.getText().toString());
  83. value2=Integer.parseInt(secondEtx.getText().toString());
  84. //獲取觸控點的數量,比如2則可能是兩個手指同時按壓屏幕
  85. int num=event.getPointerCount();
  86. try {
  87. if(event.getAction()==MotionEvent.ACTION_UP){
  88. resultEtx.setText("");
  89. }
  90. //處理多點觸控
  91. else{
  92. //一個手指按住屏幕,進行加法運算
  93. if (num==1) {
  94. str=String.valueOf(value1+value2);
  95. //將計算到的結果添加到第三個EditText
  96. resultEtx.setText(str);
  97. }
  98. else if (num==2) {
  99. str=String.valueOf(value1-value2);
  100. //將計算到的結果添加到第三個EditText
  101. resultEtx.setText(str);
  102. }
  103. else if (num==3) {
  104. str=String.valueOf(value1*value2);
  105. //將計算到的結果添加到第三個EditText
  106. resultEtx.setText(str);
  107. }
  108. else if (num==4) {
  109. str=String.valueOf(value1/value2);
  110. //將計算到的結果添加到第三個EditText
  111. resultEtx.setText(str);
  112. }
  113. else {
  114. }
  115. }
  116. } catch (Exception e) {
  117. //調用Toast顯示出現異常的信息
  118. Toast.makeText(MainActivity.this, "請檢查你輸入的除數是否正確",Toast.LENGTH_LONG).show();
  119. }
  120. return super.onTouchEvent(event);
  121. }
  122. }

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>
Copyright © Linux教程網 All Rights Reserved