安卓实现横竖计算器(一)

利用Android stdio实现较复杂计算器

Java代码

package com.gb;

import androidx.appcompat.app.AppCompatActivity;

import android.content.res.Configuration;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.javia.arity.Symbols;
import org.javia.arity.SyntaxException;

import java.math.BigDecimal;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button btn_0,btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_pt;
    Button btn_mul,btn_div,btn_add,btn_sub,btn_yu;
    Button btn_clr,btn_del,btn_eq;
    EditText et_input;
    Button sin,tan,cos,lg,ln,sqrt,square,cubic,factorial;
    Button twoND,eightND,symbol,leftk,rightk,reciprocal,Exit;
    boolean clr_flag;

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

        EditText edit=(EditText)findViewById(R.id.et_input);
        edit.setInputType(InputType.TYPE_NULL);
        Configuration config = getResources().getConfiguration();
        if(config.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            sin= (Button) findViewById(R.id.sin);
            cos= (Button) findViewById(R.id.cos);
            tan= (Button) findViewById(R.id.tan);
            lg= (Button) findViewById(R.id.lg);
            ln= (Button) findViewById(R.id.ln);
            sqrt= (Button) findViewById(R.id.sqrt);//开根号
            square= (Button) findViewById(R.id.square);//平方
            cubic= (Button) findViewById(R.id.cubic);//立方
            factorial= (Button) findViewById(R.id.factorial);//阶乘
            twoND= (Button) findViewById(R.id.twoND);
            eightND= (Button) findViewById(R.id.eightND);
            symbol= (Button) findViewById(R.id.H);//正负号
            leftk= (Button) findViewById(R.id.leftk);
            rightk= (Button) findViewById(R.id.rightk);
            reciprocal= (Button) findViewById(R.id.reciprocal); //倒数
        }

        btn_0= (Button) findViewById(R.id.btn_0);
        btn_1= (Button) findViewById(R.id.btn_1);
        btn_2= (Button) findViewById(R.id.btn_2);
        btn_3= (Button) findViewById(R.id.btn_3);
        btn_4= (Button) findViewById(R.id.btn_4);
        btn_5= (Button) findViewById(R.id.btn_5);
        btn_6= (Button) findViewById(R.id.btn_6);
        btn_7= (Button) findViewById(R.id.btn_7);
        btn_8= (Button) findViewById(R.id.btn_8);
        btn_9= (Button) findViewById(R.id.btn_9);
        btn_pt= (Button) findViewById(R.id.btn_pt);
        btn_add= (Button) findViewById(R.id.btn_add);
        btn_sub= (Button) findViewById(R.id.btn_sub);
        btn_mul= (Button) findViewById(R.id.btn_mul);
        btn_div= (Button) findViewById(R.id.btn_div);
        btn_yu= (Button) findViewById(R.id.btn_yu);
        btn_clr= (Button) findViewById(R.id.btn_clr);
        btn_del= (Button) findViewById(R.id.btn_del);
        btn_eq= (Button) findViewById(R.id.btn_eq);
        et_input= (EditText) findViewById(R.id.et_input);
        Exit= (Button) findViewById(R.id.Exit);//退出程序

    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        TextView textView1 = findViewById(R.id.et_input);//获取竖屏时结果区
        BigDecimal output1 = new BigDecimal(textView1.getText().toString());
        int bitPos1 = textView1.getText().toString().indexOf(".");
        int i1 = (int) (textView1.getText().toString().length() - bitPos1 - 1);//获取小数点后有多少位
        switch (keyCode) {
            // 音量减小
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                String test1 = output1.setScale(i1 - 1, BigDecimal.ROUND_HALF_UP).toString();//设置小数点位数为i-1位
                textView1.setText(test1);

                return true;

            case KeyEvent.KEYCODE_VOLUME_UP:
                String test3 = output1.setScale(i1 + 1, BigDecimal.ROUND_HALF_UP).toString();//设置小数点位数为i-1位
                textView1.setText(test3);

                return true;
        }
        return super.onKeyDown(keyCode, event);
    }//音量调整小数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值