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
- Kiếm tiền Accesstrade, kiếm tiền tại nhà với Accesstrade.vn – Tiếp thị liên kết
- MegaURL – Rút gọn link kiếm tiền có giá cao tại Việt Nam
- Top 4 App kiếm tiền online trên điện thoại tốt nhất 2022
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++