Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android初識之簡易計算器

Android初識之簡易計算器

編輯:關於Android編程

之前自己的編程完全是在PC上進行的,而且主要是在算法和數據結構上。由於某些需要加之認識到Android的重要性,且大學走到現在基本上沒什麼課了,空閒時間很多,於是就開始學習Android。本系列博客都將圍繞Android應用程序設計展開,由於本人是完全沒有Android程序設計基礎,所以內容都很基礎,希望與大家交流學習並得到指點。

加上昨天,總共看了兩天Android書,覺得似乎可以寫點東西了,於是動手寫了個簡易計算器,在此總結一下。由於本系列博客主要作為我學習Android的讀書筆記,所以寫的東西側重語言,功能相對一般,在後面我將盡我所能增強這個計算器的功能,爭取推出一個人工智能版的。

1.Android布局

由於手機作為人的延伸,主要是面對絕對的用戶,讓他們來打發空閒時間的。基於此,我覺得用戶界面UI是個非常重要的方面,而Android的布局Layout是關乎UI的。Android中一共有5種布局:線性布局、表格布局、相對布局、幀布局、絕對布局等等。本次我采用的是表格布局,主要是基於計算器界面的對稱性考慮的。可以直接在對應的XLM文件中設計。




    

    

        
3.Android控件

本次一共用了兩種控件,文本框TextView、按鈕Button。通過為按鈕增加監聽事件來調用相應的命令,完成預定功能。關於Button有兩種使用方法:

a、設置監聽器並在監聽器中的代碼實現中添加事件處理代碼來響應事件

bt1.setOnClickListener(new Button.OnClickListener()
    {
		public void onClick(View v) 
		{
			//完成功能
		}
    }
	)

b、在XML文件中為按鈕的android:onClick的屬性制定一個方法來響應事件,如android:onClick="onClickBt1",然後在定義public方法public void onClickBt1(View v)

public void onClickBt1(View v) 
	{
		//完成功能
	}

還有菜單menu的使用,比較簡單,在此就不說了。

3.運行截圖

\ \ \

目前不支持多次運算,無法表示負數,但可以顯示表達式,清0與刪除前一位。

4.源代碼

package com.example.calculator;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private String opA, opB, opC, show;
	private int op;
	private TextView tv;
	private int flag;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		flag = 0;
		opA = opB = opC = show = "";
		tv = (TextView) findViewById(R.id.tv);
	}
	public void onClickBt1(View v) {
		if (0 == flag)
			opA += "1";
		else
			opB += "1";
		show += "1";
		tv.setText(show);
	}

	public void onClickBt2(View v) {
		if (0 == flag)
			opA += "2";
		else
			opB += "2";
		show += "2";
		tv.setText(show);
	}

	public void onClickBt3(View v) {
		if (0 == flag)
			opA += "3";
		else
			opB += "3";
		show += "3";
		tv.setText(show);
	}

	public void onClickBt4(View v) {
		if (0 == flag)
			opA += "4";
		else
			opB += "4";
		show += "4";
		tv.setText(show);
	}

	public void onClickBt5(View v) {
		if (0 == flag)
			opA += "5";
		else
			opB += "5";
		show += "5";
		tv.setText(show);
	}

	public void onClickBt6(View v) {
		if (0 == flag)
			opA += "6";
		else
			opB += "6";
		show += "6";
		tv.setText(show);
	}

	public void onClickBt7(View v) {
		if (0 == flag)
			opA += "7";
		else
			opB += "7";
		show += "7";
		tv.setText(show);
	}

	public void onClickBt8(View v) {
		if (0 == flag)
			opA += "8";
		else
			opB += "8";
		show += "8";
		tv.setText(show);
	}

	public void onClickBt9(View v) {
		if (0 == flag)
			opA += "9";
		else
			opB += "9";
		show += "9";
		tv.setText(show);
	}

	public void onClickBt0(View v) {
		if (0 == flag)
			if (0 == flag)
				opA += "0";
			else
				opB += "0";
		show += "0";
		tv.setText(show);
	}

	public void onClickBtAdd(View v) {
		flag=1;
		show += "+";
		op = 1;
		tv.setText(show);
	}

	public void onClickBtSub(View v) {
		flag=1;
		show += "-";
		op = 2;
		tv.setText(show);
	}

	public void onClickBtMul(View v) {
		flag=1;
		show += "*";
		op = 3;
		tv.setText(show);
	}

	public void onClickBtDiv(View v) {
		flag=1;
		show += "/";
		op = 4;
		tv.setText(show);
	}

	public void onClickBtPoint(View v) {
		if (0 == flag)
			opA += ".";
		else
			opB += ".";
		show += ".";
		tv.setText(show);
	}
	public void onClickBtMod(View v) {
		flag=1;
		show += "%";
		op = 5;
		tv.setText(show);
	}

	public void onClickBtExp(View v) {
		flag=1;
		show += "^";
		op = 6;
		tv.setText(show);
	}
	
	public void onClickBtBack(View v) {
		if (0 == flag && opA.length() != 0) {
			opA = opA.substring(0, opA.length() - 1);
			show = show.substring(0, show.length() - 1);
		} else if (1 == flag) {
			if (opB.length() != 0) {
				opB = opB.substring(0, opB.length() - 1);
				show = show.substring(0, show.length() - 1);
			} else {
				show = show.substring(0, show.length() - 1);
				if(show.length()==opA.length())
				    flag = 0;
			}
		}
		tv.setText(show);
	}

	public void onClickBtCE(View v) {
		flag = 0;
		opA = opB = opC = show = "";
		tv.setText(show);
	}

	public void onClickBtEqual(View v) {
		switch (op) {
		case 1:
			opC = String.valueOf(Double.parseDouble(opA)
					+ Double.parseDouble(opB));
			break;
		case 2:
			opC = String.valueOf(Double.parseDouble(opA)
					- Double.parseDouble(opB));
			break;
		case 3:
			opC = String.valueOf(Double.parseDouble(opA)
					* Double.parseDouble(opB));
			break;
		case 4:
			opC = String.valueOf(Double.parseDouble(opA)
					/ Double.parseDouble(opB));
			break;
		case 5:
			opC = String.valueOf(Double.parseDouble(opA)
					% Double.parseDouble(opB));
			break;
		case 6:
			opC = String.valueOf(Math.pow(Double.parseDouble(opA),
					Double.parseDouble(opB)));
			break;
		}
		show += "\n=" + opC;
		tv.setText(show);
		flag = 0;
		opA = opB = opC = show = "";
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(0, 1, 1, "退出");
		menu.add(0, 2, 2, "版權");
		menu.add(0, 3, 3, "功能");
		return super.onCreateOptionsMenu(menu);
	}

	public boolean onOptionsItemSelected(MenuItem item) {
		if (item.getItemId() == 1) {
			finish();
		}
		if (item.getItemId() == 2) {
			Toast.makeText(MainActivity.this, "作者:曉風殘月xj    時間:2014-5-13",
					Toast.LENGTH_LONG).show();
		}
		if (item.getItemId() == 3) {
			Toast.makeText(MainActivity.this, "後續有智能版本", Toast.LENGTH_LONG)
					.show();
		}
		return super.onOptionsItemSelected(item);
	}
}

如有錯誤,歡迎斧正!由於初學,水平有限,我把重點放在Android語言的試用,在後面的版本中力爭推出一個可與市面上相比的人工智能版本。源碼下載請點擊源碼地址。



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved