Thứ Tư, 28 Tháng Chín 2022
Trang chủLập trìnhSource CodeLập trình Ứng dụng Máy tính bỏ túi trên Android Studio

Lập trình Ứng dụng Máy tính bỏ túi trên Android Studio

DANH SÁCH BÀI VIẾT
Lập trình ứng dụng GamePlay(Trò chơi giải trí offline) trên Android Studio
Lập trình game 2048 trên Android Studio – Mã nguồn game 2048
Lập trình Ứng dụng Máy tính bỏ túi trên Android Studio
Xây dựng game Freaking Math trên Android – Lập trình android

Trong loạt bài chia sẻ các demo và Source code, hôm nay mình sẽ chia sẻ code Lập trình Ứng dụng Máy tính bỏ túi trên Android Studio.

Lập trình Ứng dụng Máy tính bỏ túi trên Android Studio

Video dưới đây là demo mà mình đã xây dựng và sẽ chia sẻ SourceCode trong bài viết hôm nay, bạn xem qua nhé.

Ứng dụng này được mình xây dựng hồi năm 3 đại học khi học môn Lập trình Android, mục đích chính xây dựng ứng dụng này chỉ là để nghịch cũng như học hỏi thêm nên ứng dụng tương đối đơn giản. Ứng dụng chỉ có thể tính toán các phép toán như cộng, trừ, nhân, chia cơ bản…Bạn có nhu cầu thăm khảo có thể download code về nhé.

Hình ảnh ứng dụng Máy tính bỏ túi

Lập trình Ứng dụng Máy tính bỏ túi trên Android Studio

Mã nguồn chương trình

LINK TẢI XUỐNG MÃ NGUỒN

Link download Source code: https://tuicocach.com/shortlink/?c=GhJF89f

CÁC FILE TRONG MÃ NGUỒN ỨNG DỤNG

Vì ứng dụng rất đơn giản nên mình chỉ xây dựng gồm 1 file java và 1 file giao diện XML như sau:

File java MainActivity.java

package com.example.calculator;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Typeface;
import android.view.View;
import android.view.Window;
import android.os.Bundle;
import android.app.Activity;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import org.w3c.dom.Text;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MainActivity extends Activity {
    TextView input,  output, iptemp;
    private Button AC,del,off,cong, tru, nhan, chia, result, thapphan;
    private Button num1,num2,num3,num4,num5,num7,num8,num9, num6, num0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        AnhXa();
        AC.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText("");
                output.setText("0");
                iptemp.setText("");
            }
        });
        del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StringBuffer str = new StringBuffer(input.getText());
                if(str.length() > 0){
                    str.deleteCharAt(str.length()-1);input.setText(str);
                    if(str.length() > 0) Result(); else output.setText("0");
                }
            }
        });
        num0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"0");Result(); iptemp.setText("");
            }
        });
        num1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"1");Result(); iptemp.setText("");
            }
        });
        num2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"2");Result(); iptemp.setText("");
            }
        });
        num3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"3");Result(); iptemp.setText("");
            }
        });
        num4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"4");Result(); iptemp.setText("");
            }
        });
        num5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"5");Result(); iptemp.setText("");
            }
        });
        num6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"6");Result(); iptemp.setText("");
            }
        });
        num7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"7");Result(); iptemp.setText("");
            }
        });
        num8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"8");Result(); iptemp.setText("");
            }
        });
        num9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                input.setText(input.getText()+"9"); iptemp.setText("");
                Result();
            }
        });
        thapphan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(input.getText().length() >0) if(Character.isDigit(input.getText().charAt(input.getText().length()-1)) )  input.setText(input.getText()+".");
            }
        });
        off.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent startMain = new Intent(Intent.ACTION_MAIN);
                startMain.addCategory(Intent.CATEGORY_HOME);
                startActivity(startMain);
                finish();
            }
        });
        tru.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                iptemp.setText("");
                if(output.getText()!="0" && input.getText()=="")
                {
                    input.setText(output.getText()+"-");
                }
                if(input.getText().length()==0) input.setText(input.getText()+"-");
                else if(Character.isDigit(input.getText().charAt(input.getText().length()-1)) || input.getText().charAt(input.getText().length()-1)=='/' || input.getText().charAt(input.getText().length()-1)=='x' )  input.setText(input.getText()+"-");
            }
        });
        cong.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(input.getText().length() >0) if(Character.isDigit(input.getText().charAt(input.getText().length()-1)) ) input.setText(input.getText()+"+");
                if(output.getText()!="0" && input.getText()=="")
                {
                    input.setText(output.getText()+"+");
                }
            }
        });
        nhan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              if(input.getText().length() >0) if(Character.isDigit(input.getText().charAt(input.getText().length()-1)))  input.setText(input.getText()+"x");
               if(output.getText()!="0" && input.getText()=="")
              {
                  input.setText(output.getText()+"x");
              }
            }
        });
        chia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(input.getText().length() >0) if(Character.isDigit(input.getText().charAt(input.getText().length()-1)))  input.setText(input.getText()+"/");
                if(output.getText()!="0" && input.getText()=="")
                {
                    input.setText(output.getText()+"/");
                }
            }
        });
        result.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(input.getText().length() > 1 ) Result();
                iptemp.setText((String)input.getText()+" =");
                input.setText("");
            }
        });
    }
    private ArrayList<String> arrOperation;
    private ArrayList<Double> arrNumber;
    public int addOperation(String input) {
        arrOperation = new ArrayList<>();
        addNumber(this.input.getText().toString());
        if(this.input.getText().charAt(0)=='-') arrNumber.set(0,-arrNumber.get(0));
            char[] cArray = input.toCharArray();
        for (int i = 1; i < cArray.length; i++) {
            switch (cArray[i]) {
                case '+':
                    arrOperation.add(cArray[i] + "");
                    break;
                case '-':
                    arrOperation.add(cArray[i] + "");
                    break;
                case 'x':
                    arrOperation.add(cArray[i] + "");
                   if(i<cArray.length-1) if(cArray[i+1] =='-' && i+1 <cArray.length-1 )
                    {
                        arrNumber.set(arrOperation.size(),-arrNumber.get(arrOperation.size()));
                        i++;
                    }
                    break;
                case '/':
                    arrOperation.add(cArray[i] + "");
                    if(i<cArray.length-1) if(cArray[i+1] =='-' && i+1 <cArray.length-1 )
                   {
                       arrNumber.set(arrOperation.size(),-arrNumber.get(arrOperation.size()));
                       i++;
                   }
                    break;
                default:
                    break;
            }
        }
        return 0;
    }

    public void addNumber(String stringInput) {
        arrNumber = new ArrayList<>();
        Pattern regex = Pattern.compile("(\\d+(?:\\.\\d+)?)");
        Matcher matcher = regex.matcher(stringInput);
        while(matcher.find()){
            arrNumber.add(Double.valueOf(matcher.group(1)));
        }
    }
    public void Result()
    {
        DecimalFormat df = new DecimalFormat("###.#######");
        double result = 0;
        addOperation(input.getText().toString());
        if(arrNumber.size()==1)  result = arrNumber.get(0);
        if(arrOperation.size()>arrNumber.size() ||arrOperation.size()<0){
            output.setText("Input error!!");
        }else {
            for (int i = 0; i < (arrNumber.size() - 1); i++) {
                switch (arrOperation.get(i)) {
                    case "x":
                        arrNumber.set(i, arrNumber.get(i) * arrNumber.get(i + 1));
                        arrNumber.remove(i+1); arrOperation.remove(i);
                        i--;
                        break;
                    case "/":
                        arrNumber.set(i, arrNumber.get(i) / arrNumber.get(i + 1));
                        arrNumber.remove(i+1); arrOperation.remove(i);
                        i--;
                    default:
                        break;
                }
            }
            result = arrNumber.get(0);
            for (int i = 0; i < (arrNumber.size() - 1); i++) {
                switch (arrOperation.get(i)) {
                    case "+":
                        result = result + arrNumber.get(i + 1);
                        break;
                    case "-":
                            result = result - arrNumber.get(i + 1);
                        break;
                    default:
                        break;
                }
            }
            output.setText(df.format(result) + "");
        }
    }
    public void AnhXa()
    {
        input = (TextView) findViewById(R.id.input);
        output = (TextView) findViewById(R.id.output);
        AC = (Button) findViewById(R.id.AC);
        thapphan = (Button)findViewById(R.id.thapphan);
        del = (Button) findViewById(R.id.Delete);
        off = (Button) findViewById(R.id.off);
        cong = (Button) findViewById(R.id.daucong);
        tru = (Button) findViewById(R.id.dautru);
        nhan = (Button) findViewById(R.id.phepnhan);
        chia = (Button) findViewById(R.id.phepchia);
        result = (Button) findViewById(R.id.result);
        num0 = (Button) findViewById(R.id.num0);
        num1 = (Button) findViewById(R.id.num1);
        num2 = (Button) findViewById(R.id.num2);
        num3 = (Button) findViewById(R.id.num3);
        num4 = (Button) findViewById(R.id.num4);
        num5 = (Button) findViewById(R.id.num5);
        num6 = (Button) findViewById(R.id.num6);
        num7 = (Button) findViewById(R.id.num7);
        num8 = (Button) findViewById(R.id.num8);
        num9 = (Button) findViewById(R.id.num9);
        iptemp =(TextView)findViewById(R.id.iptemp);
    }
}


File giao diện activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="100"
    tools:context=".MainActivity">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="40"
        android:weightSum="100">
        <TextView
            android:id="@+id/input"
            android:textSize="33dp"
            android:textColor="#666"
            android:textAlignment="textEnd"
            android:gravity="bottom"
            android:layout_weight="45"
            android:layout_width="match_parent"
            android:layout_height="0dp" />
        <LinearLayout
            android:layout_weight="45"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:weightSum="2"
            android:orientation="vertical">
            <TextView
                android:id="@+id/iptemp"
                android:textSize="27dp"
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="0dp"></TextView>
            <TextView
                android:id="@+id/output"
                android:textSize="45dp"
                android:textColor="#000"
                android:textAlignment="textEnd"
                android:gravity="bottom"
                android:layout_weight="1"
                android:text="0"
                android:layout_width="match_parent"
                android:layout_height="0dp"/>
        </LinearLayout>
    </LinearLayout>
    <View
        android:layout_margin="10px"
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="#666"/>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="60"
        android:weightSum="5">
        <LinearLayout
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp">
            <Button
                android:id="@+id/off"
                android:text="OFF"
                android:textStyle="bold"
                android:textSize="25dp"
                android:textColor="#f00"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/AC"
                android:text="AC"
                android:textStyle="bold"
                android:textSize="25dp"
                android:textColor="#f60"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/Delete"
                android:text="Del"
                android:textStyle="bold"
                android:textSize="25dp"
                android:textColor="#f60"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/phepchia"
                android:text="/"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#f60"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
        </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp">
            <Button
                android:id="@+id/num7"
                android:text="7"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/num8"
                android:text="8"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/num9"
                android:text="9"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/phepnhan"
                android:text="x"
                android:textStyle="bold"
                android:textSize="25dp"
                android:textColor="#f60"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
        </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp">
            <Button
                android:id="@+id/num4"
                android:text="4"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/num5"
                android:text="5"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/num6"
                android:text="6"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/dautru"
                android:text="-"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#f60"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
        </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp">

            <Button
                android:id="@+id/num1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="1"
                android:textColor="#000"
                android:textSize="31dp"
                android:textStyle="bold" />

            <Button
                android:id="@+id/num2"
                android:text="2"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/num3"
                android:text="3"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/daucong"
                android:text="+"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#f60"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
        </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp">

            <Button
                android:id="@+id/thapphan"
                android:text="."
                android:gravity="center"
                android:textStyle="bold"
                android:textSize="90px"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/num0"
                android:text="0"
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#000"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
            <Button
                android:id="@+id/result"
                android:text="="
                android:textStyle="bold"
                android:textSize="31dp"
                android:textColor="#09f"
                android:layout_weight="2"
                android:layout_width="0dp"
                android:layout_height="match_parent"/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
XEM THÊM
Xây dựng game Freaking Math trên Android – Lập trình android
Lập trình tỏ tình người yêu trên Graphics C/C++ – I LOVE YOU
Lập trình Demo Ai Là Triệu Phú trên Graphics C/C++
Lập Trình C/C++ Vẽ và Tô Màu Trái Tim bằng Thư Viện Graphics
Lập trình Đồng Hồ Thời Gian & Bấm Giờ Trên Graphics C/C++
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x