Android的编程 – 帖子 6: 施工实践计算器应用

大家好, 在 2 我们收集了之前的所有接口设计相对更多的则. 为了减轻压力,放松一点,那么本文将引导你做出一个完整的应用计算器.

[qads]

我们将使用代码界面设计前夕.

计算器布局-OK-2

忘了啊, 系统会提示您这个程序做可以快速计算并没有费多大力气, 我们将使用 巴兰库 他们已经建立. 你 这里balan.jar文件下载. 接下来打开工程模式,将文件复制到该文件夹​​balan.jar应用程序/如图所示库

Android的插件库

然后右键单击选中的文件balan.jar 添加为库… 附近的菜单的底部, 该系统将询问是否要为每一个应用程序担心的OK模块来增加. 等一下同步系统完成.

现在你打开文件夹中的文件ActivityMain.java 应用程序/ src目录/主/ JAVA /{包名} 出. 目前,下巴 的setContentView我们drrdf遗体 R.layout.activity_main, 你改变它 R.layout.layout_calculator 连接到您所设计的前一天,计算器界面的文件.

package com.nguyenvanquan7826.tut5linearlayout;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_calculator);
    }
}

然后确定, 实际上小时开始NHE.
第一, 能够与电脑操纵, 我们需要通过相应的变量在使用Java代码的界面的元素连接.

package com.nguyenvanquan7826.tut5linearlayout;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView tvMath;
    private TextView tvResult;

    private int[] idButton = {
            R.id.btn0,
            R.id.btn1, R.id.btn2, R.id.btn3,
            R.id.btn4, R.id.btn5, R.id.btn6,
            R.id.btn7, R.id.btn8, R.id.btn9,
            R.id.btnDot, R.id.btnResult,
            R.id.btnPlus, R.id.btnSub, R.id.btnMul, R.id.btnDiv,
            R.id.btnC, R.id.btnOpen, R.id.btnClose
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_calculator);

        connectView();
    }

    private void connectView() {
        tvMath = (TextView) findViewById(R.id.tvMath);
        tvResult = (TextView) findViewById(R.id.tvResult);

        for (int i = 0; i < idButton.length; i++) {
            findViewById(idButton[i]).setOnClickListener(this);
        }
    }

    @Override
    public void onClick(View view) {
        
    }
}

你有没有在连接代码注意和TextView的结果是正常的数学, 按钮连接个人是不正常. 我意识到之所以有这么多的按钮来连接并开始,他们都需要事件. 这样的想法是能够输入数据循环,以重复相同的工作,? 因此,他们有自己的身份证到一个数组 idButton. 每个视图实质性的ID转换为整数类型系统, 所以这个数组类型 INT. 另外,连接并开始在循环中的每个按钮的情况也各不相同. 我们不投刚刚通过指挥链捕获的事件立即连接按钮 findViewById(idButton[在]).setOnClickListener(此);
其原因是,该函数 findViewById 给我们带来了查看 (从那以后,我们通常压在它的真实风格按钮, 的TextView,…) 每个视图功能,可以捕捉Click事件 (其中的TextView, 的EditText,…) 我们是否应该要求立即 setOnClickListener 然后在不上的按钮进行铸造.

现在,下一个任务是处理按钮单击事件. 在这里,我们分头做 3 一种按钮: 按钮数量, 按钮按钮处理数学和数学.
按钮数字和按钮操作,点击任何按钮时, 我们只需要添加相应的表达式文本. 按钮再处理 (按钮C VA =按钮 ) 然后执行计算或清除屏幕. 当您单击按钮,按, 我们呼吁,我们已经添加到原来的库巴兰巴兰对象valueMath, 它会指望我们的结果.

package com.nguyenvanquan7826.tut5linearlayout;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import cachhoc.net.Balan;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView tvMath;
    private TextView tvResult;

    private int[] idButton = {
            R.id.btn0,
            R.id.btn1, R.id.btn2, R.id.btn3,
            R.id.btn4, R.id.btn5, R.id.btn6,
            R.id.btn7, R.id.btn8, R.id.btn9,
            R.id.btnDot,
            R.id.btnPlus, R.id.btnSub, R.id.btnMul, R.id.btnDiv,
            R.id.btnOpen, R.id.btnClose,
            R.id.btnC, R.id.btnResult
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_calculator);

        connectView();
    }

    private void connectView() {
        tvMath = (TextView) findViewById(R.id.tvMath);
        tvResult = (TextView) findViewById(R.id.tvResult);

        for (int i = 0; i < idButton.length; i++) {
            findViewById(idButton[i]).setOnClickListener(this);
        }
        init();
    }

    private void init() {
        tvMath.setText("|");
        tvResult.setText("0");
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();

        // check button number and button operator
        for (int i = 0; i < idButton.length - 2; i++) {
            if (id == idButton[i]) {
                String text = ((Button) findViewById(id)).getText().toString();

                // clear char | on top
                if (tvMath.getText().toString().trim().equals("|")) {
                    tvMath.setText("");
                }

                tvMath.append(text);
                return;
            }
        }

        // clear screen
        if (id == R.id.btnC) {
            init();
            return;
        }

        // calculation
        if (id == R.id.btnResult) {
            cal();
        }
    }

    private void cal() {
        String math = tvMath.getText().toString().trim();
        if (math.length() > 0) {
            Balan balan = new Balan();
            String result = balan.valueMath(math) + "";
            String error = balan.getError();

            // check error
            if (error != null) {
                tvResult.setText(error);
            } else { // show result
                tvResult.setText(result);
            }
        }
    }
}

就是这样, 在这里我们的研究结果下线.
计算器的结果