Android開發實現計算機的例子,android計算機例子

來源:互聯網
上載者:User

Android開發實現計算機的例子,android計算機例子

例子

代碼如下 複製代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/warpcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<HorizontalScrollView
android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/resultText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:padding="8dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/number0"
android:textSize="40sp" />
</HorizontalScrollView >

<TableLayout
android:id="@+id/buttonTable"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:stretchColumns="*" >

<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >

<Button
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number7" />

<Button
android:id="@+id/button8"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number8" />

<Button
android:id="@+id/button9"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number9" />

<Button
android:id="@+id/buttonBackSpace"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/backspace" />

<Button
android:id="@+id/buttonClear"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/clear" />
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >

<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number4" />

<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number5" />

<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number6" />

<Button
android:id="@+id/buttonMultiply"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/multiply" />

<Button
android:id="@+id/buttonDivide"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/divide" />
</TableRow>
</TableLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" >

<TableLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="3"
android:stretchColumns="*" >

<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number1" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number2" />

<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number3" />
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >

<Button
android:id="@+id/button0"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/number0" />

<Button
android:id="@+id/buttonDot"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@stri(www.111cn.net)ng/dot" />

<Button
android:id="@+id/buttonNegSign"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:onClick="onClickListener"
android:text="@string/negSign" />
</TableRow>
</TableLayout>

<Button
android:id="@+id/buttonPlus"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:onClick="onClickListener"
android:text="@string/plus" />

<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical" >

<Button
android:id="@+id/buttonMinus"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:onClick="onClickListener"
android:text="@string/minus" />

<Button
android:id="@+id/buttonEval"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:onClick="onClickListener"
android:text="@string/eval" />
</LinearLayout>
</LinearLayout>

</LinearLayout>

MainActivity類和之前的java計算機差不多:

代碼如下 複製代碼
package me.jerrys.calc;

import java.math.BigDecimal;

import android.support.v7.app.ActionBarActivity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
private TextView textView;
private BigDecimal lastNum = new BigDecimal("0");
private BigDecimal currentNum = new BigDecimal("0");
private String currentText;
private boolean typeClean = false;
private boolean hadCalced = false;
private MODE currentMode = MODE.PLUS;
private enum MODE {
PLUS, MINUS, MULTIPLY, DIVIDE
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.resultText);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

public void onClickListener(View v) {
currentText = textView.getText().toString();
switch (v.getId()) {
case R.id.button0:
addNumber("0");
break;
case R.id.button1:
addNumber("1");
break;
case R.id.button2:
addNumber("2");
break;
case R.id.button3:
addNumber("3");
break;
case R.id.button4:
addNumber("4");
break;
case R.id.button5:
addNumber("5");
break;
case R.id.button6:
addNumber("6");
break;
case R.id.button7:
addNumber("7");
break;
case R.id.button8:
addNumber("8");
break;
case R.id.button9:
addNumber("9");
break;
case R.id.buttonNegSign:
addSign();
break;
case R.id.buttonClear:
clear();
break;
case R.id.buttonBackSpace:
backSpace();
break;
case R.id.buttonPlus:
setMode(MODE.PLUS);
break;
case R.id.buttonMinus:
setMode(MODE.MINUS);
break;
case R.id.buttonMultiply:
setMode(MODE.MULTIPLY);
break;
case R.id.buttonDivide:
setMode(MODE.DIVIDE);
break;
case R.id.buttonEval:
calc();
break;
case R.id.buttonDot:
addNumber(".");
break;
}
}
private void calc() {
if (hadCalced && typeClean) return;
currentNum = new BigDecimal(currentText);
try {
switch (currentMode) {
case PLUS:
lastNum = lastNum.add(currentNum);
break;
case MINUS:
lastNum = lastNum.subtract(currentNum);
break;
case MULTIPLY:
lastNum = lastNum.multiply(currentNum);
break;
case DIVIDE:
lastNum = lastNum.divide(currentNum, 16,
BigDecimal.ROUND_HALF_DOWN);
break;
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "發生錯誤:"+e.getMessage(), Toast.LENGTH_SHORT).show();
return;
}
String resultText = lastNum.toString();
if (resultText.indexOf(".") > 0) { // 消除小數多餘位元
resultText = resultText.replaceAll("0+?$", "");
resultText = resultText.replaceAll("[.]$", "");
}
setResultText(resultText);
typeClean = true;
hadCalced = false;
}
private void setMode(MODE mode) {
if (!hadCalced && !typeClean) {
calc();
currentMode = mode;
return;
}
lastNum = new BigDecimal(currentText);
currentMode = mode;
typeClean = true;
hadCalced = true;
}

private void addSign() {
if (currentText.equals("0") || currentText.equals("")) return;
if (currentText.startsWith("-")) setResultText(currentText.substring(1));
else setResultText("-" + currentText);
}

private void clear() {
currentNum = new BigDecimal("0");
lastNum = new BigDecimal("0");
typeClean = false;
currentMode = MODE.PLUS;
setResultText("0");
}

private void setResultText(String string) {
textView.setText(string);
}

public void addNumber(String num) {
String resultText = currentText;
if (typeClean == true) {
resultText = "0";
typeClean = false;
}
if (num.equals(".") && currentText.lastIndexOf(".") != -1) return;
if ((resultText.equals("0") || resultText.equals(""))
&& !num.equals("."))
resultText = "";
resultText = resultText + num;
setResultText(resultText);
}

private void backSpace() {
if (currentText.equals("0") || currentText.equals("")) return;
if (currentText.length() == 1) {
setResultText("0");
return;
}
setResultText(currentText.substring(0, currentText.length() - 1));
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_about) {
new AlertDialog.Builder(this).setTitle("關於").setMessage("【Android www.111cn.net簡易計算機】n作者 JerryLocken部落格 n源碼 /android-simple-calc").setPositiveButton("確定", null).show();
return true;
}
return super.onOptionsItemSelected(item);
}
}

from:http://www.111cn.net/sj/android/60746.htm


android實現布局,實現計算機加法運算

用gridlayout很好實現,但是這個值支援4.0以上的版本,網上有一大堆例子,你可以去看看,Linearlayout也可以,不過比較繁雜
 
android 做計算機 怎實現用EditText顯示使用者的全部輸入 例如3+2-8 這樣??

StringBuffer sb = new StringBuffer();
sb.append("3");
sb.append("+");
sb.append("2");
sb.append("-");
sb.append("8");
EditText.setText(sb.toString());
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.