안드로이드 개발 정보
(글 수 97)
계산기 코드 입니다..
한번 만들어 봤는데 아직 초보라서 많이 부족합니다 .
더 나은 방법있으면 알려주세요 ㅜ
안드로이드 스튜디오에서 만들어 봤어요
----xml----
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#000000"
tools:context="com.example.jin.calculator.MainActivity">
<LinearLayout
android:layout_weight="1.5"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_memo"
android:textSize="50dp"
android:gravity="right|center_vertical"
android:textColor="#ffffff"
android:background="#444444"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0px">
<Button
android:onClick="Onclick"
android:id="@+id/btn_c"
android:background="#333333"
android:text="C"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_dell"
android:text="DELL"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0px">
<Button
android:onClick="Onclick"
android:id="@+id/btn_1"
android:text="1"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_2"
android:text="2"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_3"
android:text="3"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_add"
android:text="+"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0px">
<Button
android:onClick="Onclick"
android:id="@+id/btn_4"
android:text="4"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_5"
android:textColor="#ffffff"
android:text="5"
android:background="#333333"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_6"
android:text="6"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_ma"
android:text="-"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:onClick="Onclick"
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0px">
<Button
android:onClick="Onclick"
android:id="@+id/btn_7"
android:text="7"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_8"
android:text="8"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_9"
android:text="9"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_gop"
android:text="*"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0px">
<Button
android:onClick="Onclick"
android:id="@+id/btn_jam"
android:text="."
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_0"
android:text="0"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_nn"
android:text="="
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:onClick="Onclick"
android:id="@+id/btn_nanugi"
android:text="/"
android:background="#333333"
android:textColor="#ffffff"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
----JAVA----
package com.example.jin.calculator;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
ArrayList arrayList = new ArrayList();
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_c = (Button) findViewById(R.id.btn_c);
Button btn_dell = (Button) findViewById(R.id.btn_dell);
Button btn_jam = (Button) findViewById(R.id.btn_jam);
Button btn_0 = (Button) findViewById(R.id.btn_0);
Button btn_1 = (Button) findViewById(R.id.btn_1);
Button btn_2 = (Button) findViewById(R.id.btn_2);
Button btn_3 = (Button) findViewById(R.id.btn_3);
Button btn_4 = (Button) findViewById(R.id.btn_4);
Button btn_5 = (Button) findViewById(R.id.btn_5);
Button btn_6 = (Button) findViewById(R.id.btn_6);
Button btn_7 = (Button) findViewById(R.id.btn_7);
Button btn_8 = (Button) findViewById(R.id.btn_8);
Button btn_9 = (Button) findViewById(R.id.btn_9);
Button btn_add = (Button) findViewById(R.id.btn_add);
Button btn_ma = (Button) findViewById(R.id.btn_ma);
Button btn_gop = (Button) findViewById(R.id.btn_gop);
Button btn_nanugi = (Button) findViewById(R.id.btn_nanugi);
Button btn_nn = (Button) findViewById(R.id.btn_nn);
btn_c.setOnClickListener(this);
btn_dell.setOnClickListener(this);
btn_jam.setOnClickListener(this);
btn_add.setOnClickListener(this);
btn_ma.setOnClickListener(this);
btn_gop.setOnClickListener(this);
btn_nanugi.setOnClickListener(this);
btn_nn.setOnClickListener(this);
btn_0.setOnClickListener(this);
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
btn_5.setOnClickListener(this);
btn_6.setOnClickListener(this);
btn_7.setOnClickListener(this);
btn_8.setOnClickListener(this);
btn_9.setOnClickListener(this);
}
@Override
public void onClick(View v) {
TextView tv_memo = (TextView) findViewById(R.id.tv_memo);
switch (v.getId()) {
case R.id.btn_jam:
tv_memo.setText(tv_memo.getText().toString() + ".");
break;
case R.id.btn_c:
arrayList.clear();
tv_memo.setText("");
break;
case R.id.btn_dell:
if (tv_memo.getText().toString() != "") {
tv_memo.setText("");
}
break;
case R.id.btn_0:
tv_memo.setText(tv_memo.getText().toString() + "0");
break;
case R.id.btn_1:
tv_memo.setText(tv_memo.getText().toString() + "1");
break;
case R.id.btn_2:
tv_memo.setText(tv_memo.getText().toString() + "2");
break;
case R.id.btn_3:
tv_memo.setText(tv_memo.getText().toString() + "3");
break;
case R.id.btn_4:
tv_memo.setText(tv_memo.getText().toString() + "4");
break;
case R.id.btn_5:
tv_memo.setText(tv_memo.getText().toString() + "5");
break;
case R.id.btn_6:
tv_memo.setText(tv_memo.getText().toString() + "6");
break;
case R.id.btn_7:
tv_memo.setText(tv_memo.getText().toString() + "7");
break;
case R.id.btn_8:
tv_memo.setText(tv_memo.getText().toString() + "8");
break;
case R.id.btn_9:
tv_memo.setText(tv_memo.getText().toString() + "9");
break;
case R.id.btn_add:
arrayList.add(tv_memo.getText().toString());
tv_memo.setText("");
count = 1;
break;
case R.id.btn_ma:
arrayList.add(tv_memo.getText().toString());
tv_memo.setText("");
count = 2;
break;
case R.id.btn_gop:
arrayList.add(tv_memo.getText().toString());
tv_memo.setText("");
count = 3;
break;
case R.id.btn_nanugi:
arrayList.add(tv_memo.getText().toString());
tv_memo.setText("");
count = 4;
break;
case R.id.btn_nn:
int sum1 = 0, sum2 = 0, sum3, count2 = 0;
double fsum1 = 0, fsum2 = 0, fsum3 = 0;
if (arrayList.isEmpty()) {
tv_memo.setText("");
} else {
Object obj = arrayList.get(0);
String num1 = (String) obj;
String num2 = tv_memo.getText().toString();
if (num1.contains(".") || num2.contains(".")) {
count2 = 1;
fsum1 = Float.parseFloat(num1);
fsum2 = Float.parseFloat(num2);
} else {
sum1 = Integer.parseInt(num1);
sum2 = Integer.parseInt(num2);
sum3 = 0;
}
String val = "";
switch (count) {
case 0:
tv_memo.setText("");
case 1:
if (count2 == 1) {
fsum3 = fsum1 + fsum2;
val = String.valueOf(fsum3);
} else {
sum3 = sum1 + sum2;
val = String.valueOf(sum3);
}
tv_memo.setText(val);
arrayList.clear();
break;
case 2:
if (count2 == 1) {
fsum3 = fsum1 - fsum2;
val = String.valueOf(fsum3);
} else {
sum3 = sum1 - sum2;
val = String.valueOf(sum3);
}
tv_memo.setText(val);
arrayList.clear();
break;
case 3:
if (count2 == 1) {
fsum3 = fsum1 * fsum2;
val = String.valueOf(fsum3);
} else {
sum3 = sum1 * sum2;
val = String.valueOf(sum3);
}
tv_memo.setText(val);
arrayList.clear();
break;
case 4:
if (count2 == 1) {
fsum3 = fsum1 / fsum2;
val = String.valueOf(fsum3);
} else {
sum3 = sum1 / sum2;
val = String.valueOf(sum3);
}
tv_memo.setText(val);
arrayList.clear();
break;
}
}
break;
}
}
}
버튼이 숫자인 경우 switch case문 대신에 아래같이 해도 될 것 같아요.
그 외 반복적인 부분이 있거나 동일한 로직이 있는 경우 최대한 코드를 줄여보세요.