av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android table布局開發(fā)實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

瀏覽:3日期:2022-09-24 11:24:19

本文實(shí)例為大家分享了Android table布局開發(fā)實(shí)現(xiàn)簡(jiǎn)單計(jì)算器的具體代碼,供大家參考,具體內(nèi)容如下

結(jié)果如圖:

Android table布局開發(fā)實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

XML文件如下:

<FrameLayout xmlns:android='http://schemas.android.com/apk/res/android'xmlns:tools='http://schemas.android.com/tools'android:id='@+id/container'android:layout_width='match_parent'android:layout_height='match_parent'tools:context='com.example.wxhcalculator.MainActivity'tools:ignore='MergeRootFrame' ><TableLayoutandroid:layout_width='match_parent'android:layout_height='wrap_content'android:stretchColumns='1'android:textSize='42sp' ><TableRow><EditTextandroid:id='@+id/result'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_span='4'android:background='@android:drawable/editbox_background'android:cursorVisible='false'android:editable='false'android:gravity='right|center_vertical'android:lines='1'android:textSize='60sp' /></TableRow><TableRow><LinearLayoutandroid:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:orientation='horizontal'android:textSize='42sp' ><Buttonandroid:id='@+id/num7'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='7'android:textSize='42sp' /><Buttonandroid:id='@+id/num8'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='8'android:textSize='42sp' /><Buttonandroid:id='@+id/num9'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='9'android:textSize='42sp' /><Buttonandroid:id='@+id/divide'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='/'android:textSize='42sp' /></LinearLayout></TableRow><TableRow><LinearLayoutandroid:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:orientation='horizontal'android:textSize='42sp' ><Buttonandroid:id='@+id/num4'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='4'android:textSize='42sp' /><Buttonandroid:id='@+id/num5'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='5'android:textSize='42sp' /><Buttonandroid:id='@+id/num6'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='6'android:textSize='42sp' /><Buttonandroid:id='@+id/multiply'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='*'android:textSize='42sp' /></LinearLayout></TableRow><TableRow><LinearLayoutandroid:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:orientation='horizontal'android:textSize='42sp' ><Buttonandroid:id='@+id/num1'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='1'android:textSize='42sp' /><Buttonandroid:id='@+id/num2'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='2'android:textSize='42sp' /><Buttonandroid:id='@+id/num3'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='3'android:textSize='42sp' /><Buttonandroid:id='@+id/subtract'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='-'android:textSize='42sp' /></LinearLayout></TableRow><TableRow><LinearLayoutandroid:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:orientation='horizontal'android:textSize='42sp' ><Buttonandroid:id='@+id/num0'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='0'android:textSize='42sp' /><Buttonandroid:id='@+id/point'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='.'android:textSize='42sp' /><Buttonandroid:id='@+id/add'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='+'android:textSize='42sp' /><Buttonandroid:id='@+id/equal'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_weight='1'android:text='='android:textSize='42sp' /></LinearLayout></TableRow><TableRow><Buttonandroid:id='@+id/clear'android:layout_width='fill_parent'android:layout_height='wrap_content'android:layout_span='4'android:gravity='center_vertical|center_horizontal'android:text='clear'android:textSize='30sp' /></TableRow></TableLayout></FrameLayout>

mainActivity主函數(shù)如下:

package com.example.wxhcalculator;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends ActionBarActivity {private Button[] btnNum = new Button[11];// 數(shù)值按鈕private Button[] btnCommand = new Button[5];// 符號(hào)按鈕private EditText editText = null;// 顯示區(qū)域private Button btnClear = null; // clear按鈕private String lastCommand; // 用于保存運(yùn)算符private boolean clearFlag; // 用于判斷是否清空顯示區(qū)域的值,true需要,false不需要private boolean firstFlag; // 用于判斷是否是首次輸入,true首次,false不是首次private double result; // 計(jì)算結(jié)果public MainActivity() {// 初始化各項(xiàng)值result = 0; // x的值firstFlag = true; // 是首次運(yùn)算clearFlag = false; // 不需要清空l(shuí)astCommand = '='; // 運(yùn)算符}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 獲取運(yùn)算符btnCommand[0] = (Button) findViewById(R.id.add);btnCommand[1] = (Button) findViewById(R.id.subtract);btnCommand[2] = (Button) findViewById(R.id.multiply);btnCommand[3] = (Button) findViewById(R.id.divide);btnCommand[4] = (Button) findViewById(R.id.equal);// 獲取數(shù)字btnNum[0] = (Button) findViewById(R.id.num0);btnNum[1] = (Button) findViewById(R.id.num1);btnNum[2] = (Button) findViewById(R.id.num2);btnNum[3] = (Button) findViewById(R.id.num3);btnNum[4] = (Button) findViewById(R.id.num4);btnNum[5] = (Button) findViewById(R.id.num5);btnNum[6] = (Button) findViewById(R.id.num6);btnNum[7] = (Button) findViewById(R.id.num7);btnNum[8] = (Button) findViewById(R.id.num8);btnNum[9] = (Button) findViewById(R.id.num9);btnNum[10] = (Button) findViewById(R.id.point);// 初始化顯示結(jié)果區(qū)域editText = (EditText) findViewById(R.id.result);editText.setText('0.0');// 實(shí)例化監(jiān)聽器對(duì)象NumberAction na = new NumberAction();CommandAction ca = new CommandAction();for (Button bc : btnCommand) {bc.setOnClickListener(ca);}for (Button bc : btnNum) {bc.setOnClickListener(na);}// clear按鈕的動(dòng)作btnClear = (Button) findViewById(R.id.clear);btnClear.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {editText.setText('0.0');// 初始化各項(xiàng)值result = 0; // x的值firstFlag = true; // 是首次運(yùn)算clearFlag = false; // 不需要清空l(shuí)astCommand = '='; // 運(yùn)算符}});}// 數(shù)字按鈕監(jiān)聽器private class NumberAction implements OnClickListener {@Overridepublic void onClick(View view) {Button btn = (Button) view;String input = btn.getText().toString();if (firstFlag) { // 首次輸入// 一上就'.',就什么也不做if (input.equals('.')) {return;}// 如果是'0.0'的話,就清空if (editText.getText().toString().equals('0.0')) {editText.setText('');}firstFlag = false;// 改變是否首次輸入的標(biāo)記值} else {String editTextStr = editText.getText().toString();// 判斷顯示區(qū)域的值里面是否已經(jīng)有'.',如果有,輸入的又是'.',就什么都不做if (editTextStr.indexOf('.') != -1 && input.equals('.')) {return;}// 判斷顯示區(qū)域的值里面只有'-',輸入的又是'.',就什么都不做if (editTextStr.equals('-') && input.equals('.')) {return;}// 判斷顯示區(qū)域的值如果是'0',輸入的不是'.',就什么也不做if (editTextStr.equals('0') && !input.equals('.')) {return;}}// 如果我點(diǎn)擊了運(yùn)算符以后,再輸入數(shù)字的話,就要清空顯示區(qū)域的值if (clearFlag) {editText.setText('');clearFlag = false;// 還原初始值,不需要清空}editText.setText(editText.getText().toString() + input);// 設(shè)置顯示區(qū)域的值}}// 符號(hào)按鈕監(jiān)聽器private class CommandAction implements OnClickListener {@Overridepublic void onClick(View view) {Button btn = (Button) view;String inputCommand = (String) btn.getText();if (firstFlag) {// 首次輸入'-'的情況if (inputCommand.equals('-')) {editText.setText('-');// 顯示區(qū)域的內(nèi)容設(shè)置為'-'firstFlag = false;// 改變首次輸入的標(biāo)記}} else {if (!clearFlag) {// 如果flag=false不需要清空顯示區(qū)的值,就調(diào)用方法計(jì)算calculate(Double.parseDouble(editText.getText().toString()));// 保存顯示區(qū)域的值,并計(jì)算}// 保存你點(diǎn)擊的運(yùn)算符lastCommand = inputCommand;clearFlag = true;// 因?yàn)槲疫@里已經(jīng)輸入過(guò)運(yùn)算符,}}}// 計(jì)算用的方法private void calculate(double x) {if (lastCommand.equals('+')) {result += x;} else if (lastCommand.equals('-')) {result -= x;} else if (lastCommand.equals('*')) {result *= x;} else if (lastCommand.equals('/')) {result /= x;} else if (lastCommand.equals('=')) {result = x;}editText.setText('' + result);}}

更多計(jì)算器功能實(shí)現(xiàn),請(qǐng)點(diǎn)擊專題: 計(jì)算器功能匯總 進(jìn)行學(xué)習(xí)

關(guān)于Android計(jì)算器功能的實(shí)現(xiàn),查看專題:Android計(jì)算器 進(jìn)行學(xué)習(xí)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 亚洲免费久久 | 四虎久久| 日韩精品免费观看 | 欧美综合一区二区三区 | 中文字幕精品一区久久久久 | 欧美日韩在线精品 | 最新av在线 | 高潮毛片无遮挡免费看 | 在线免费观看av网站 | 国产福利视频 | 91av精品 | 日韩成人精品 | 伊人网在线| 亚洲精品www久久久久久广东 | 亚洲综合影院 | 中文毛片| 欧美精品二区三区四区免费看视频 | 国产精品一区二区三 | 香蕉视频在线观看网站 | 国产免费黄色 | 欧美黄色录像 | 欧美一区二区三区在线视频 | 永久黄网站色视频免费观看w | 欧美黄色片视频 | 国产色视频一区二区三区qq号 | 国产伦精品一区二区三区免费视频 | 中文字幕在线视频观看 | 欧美日韩不卡 | 亚洲一区二区国产精品 | 亚洲综合另类 | 日日拍夜夜拍 | 热久久免费视频 | 亚州精品视频 | 免费国产黄色 | 午夜久久久久久 | 日韩激情网站 | 色婷婷网 | 欧美在线视频免费观看 | 日韩视频在线观看免费 | 成人午夜在线观看 | 国产伦理一区二区 |