android牛刀小试之计算器设计

在家里自学了一段时间android,看完郭霖大神的《第一行代码》收获颇多,忍不住自己试了一下。




下面是我做好的界面,因为不涉及使用,练手的,比较粗糙,处女座的请绕行。


以上实现了加减乘除运算,还有清除,切换正负(+/_),百分号等功能。


代码如下:

public class MainActivity extends Activity  {

    boolean isClickEqu=false;
    double calResult;
    int op=0;
    double num1=0,num2=0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.ac).setOnClickListener(new MyClickListener());
        findViewById(R.id.fold).setOnClickListener(new MyClickListener());
        findViewById(R.id.percent).setOnClickListener(new MyClickListener());

        findViewById(R.id.seven).setOnClickListener(new MyClickListener());
        findViewById(R.id.eight).setOnClickListener(new MyClickListener());
        findViewById(R.id.nine).setOnClickListener(new MyClickListener());

        findViewById(R.id.four).setOnClickListener(new MyClickListener());
        findViewById(R.id.five).setOnClickListener(new MyClickListener());
        findViewById(R.id.six).setOnClickListener(new MyClickListener());

        findViewById(R.id.one).setOnClickListener(new MyClickListener());
        findViewById(R.id.two).setOnClickListener(new MyClickListener());
        findViewById(R.id.three).setOnClickListener(new MyClickListener());

        findViewById(R.id.zero).setOnClickListener(new MyClickListener());
        findViewById(R.id.plus).setOnClickListener(new MyClickListener());
        findViewById(R.id.minus).setOnClickListener(new MyClickListener());
        findViewById(R.id.mul).setOnClickListener(new MyClickListener());
        findViewById(R.id.div).setOnClickListener(new MyClickListener());
        findViewById(R.id.equal).setOnClickListener(new MyClickListener());
        findViewById(R.id.point).setOnClickListener(new MyClickListener());
    }


   class MyClickListener implements OnClickListener

    {
        public void onClick (View view){
            EditText txt=(EditText)findViewById(R.id.edit_text);
        switch (view.getId()) {
            case R.id.ac:

                txt.setText("");
                break;
            case R.id.fold:
                double strF;
                strF = Double.valueOf(txt.getText().toString());
                strF = -strF;
                String str = String.valueOf(strF);
                txt.setText(str);
                break;
            case R.id.percent:
                String strP = txt.getText().toString();
                double strP1;
                strP1 = Double.valueOf(strP);
                double strP2 = strP1 * 0.01;
                strP = String.valueOf(Double.valueOf(strP2));
                txt.setText(strP);
                break;
            case R.id.seven:
                inPut("7");
                break;
            case R.id.eight:
                inPut("8");
                break;
            case R.id.nine:
                inPut("9");
                break;
            case R.id.four:
                inPut("4");
                break;
            case R.id.five:
                inPut("5");
                break;
            case R.id.six:
                inPut("6");
                break;
            case R.id.one:
                inPut("1");
                break;
            case R.id.two:
                inPut("2");
                break;
            case R.id.three:
                inPut("3");
                break;
            case R.id.zero:
                inPut("0");
                break;
            case R.id.plus:
                String strPl = txt.getText().toString();
                if (strPl.equals(null)) {
                    return;
                }
                num1 = Double.valueOf(strPl);
                txt.setText(null);
                op = 1;
                isClickEqu = false;
                break;
            case R.id.minus:
                String strm = txt.getText().toString();
                if (strm.equals(null)) {
                    return;
                }
                num1 = Double.valueOf(strm);
                txt.setText(null);
                op = 2;
                isClickEqu = false;
                break;
            case R.id.mul:
                String strmu = txt.getText().toString();
                if (strmu.equals(null)) {
                    return;
                }
                num1 = Double.valueOf(strmu);
                txt.setText(null);
                op = 3;
                isClickEqu = false;
                break;
            case R.id.div:
                String strd = txt.getText().toString();
                if (strd.equals(null)) {
                    return;
                }
                num1 = Double.valueOf(strd);
                txt.setText(null);
                op = 4;
                isClickEqu = false;
                break;
            case R.id.point:
                if (isClickEqu) {
                    txt.setText(null);
                    isClickEqu = false;
                }
                String strPO = txt.getText().toString() + ".";
                txt.setText(strPO);
                break;
            case R.id.equal:
                String strBefore = txt.getText().toString();
                if (strBefore.equals(null)) {
                    return;
                }
                num2 = Double.valueOf(strBefore);
                switch (op) {
                    case 0:
                        calResult = num2;
                        break;
                    case 1:
                        calResult = num1 + num2;
                        break;
                    case 2:
                        calResult = num1 - num2;
                        break;
                    case 3:
                        calResult = num1 * num2;
                        break;
                    case 4:
                        calResult = num1 / num2;
                        break;
                    default:
                        calResult = 0;
                        break;
                }
                txt.setText(String.valueOf(calResult));
                isClickEqu = true;

                break;
            default:
                break;


        }
    }
    }
    public  void inPut(String a){
        EditText txt=(EditText)findViewById(R.id.edit_text);
        if(isClickEqu)
        {
            txt.setText(null);
            isClickEqu=false;
        }

        String     Stringa=txt.getText().toString()+a;
        txt.setText(Stringa);
    }
}


这里强调OnClickListener的用法,因为相应的button较多,所以公用了响应事件。
如果是把mainactivity当作监听类,则可能造成逻辑混乱。
所以这里是新建一个类,继承 
OnClickListener



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值