336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android 간단한 계산기 만들기
계산기를 만들기 위해서 버튼을 0~9까지 각각 주고 버튼 클릭 한 버튼의 값을 가져오는 방식을 알아야한다
우선 버튼을 추가하기 위해서 activity_main.xml에서 버튼을 추가한다
Text를 1로 바꿔 주고 Text로 가서 ID를 btn1로 변경을 해준다
그런 후 MainActivity.java에서 로직을 작성해준다
버튼을 받는데 에러가 날 때 캐스팅을 해주면 된다
이제 button1의 OnClickListner를 이용해서 이벤트를 처리할 수 있다
button1의 setOnClickListener를 보면 View.OnClickLstener를 볼 수 있는데 인터페이스이다
지금 button1이 에러가 발생하는 이유는 setonClickListener의 인스턴스에 button1가 없기 때문이다
그래서 button1을 상수화 시켜주면 된다
그렇다면 실행을 해서 결과를 확인해 본다
1 버튼을 누르고 1 값이 Toast 처리된 것을 볼 수 있다
*Source Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button1 = (Button) findViewById(R.id.btn1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), button1.getText(), Toast.LENGTH_SHORT).show();
}
});
}
|
cs |
위의 방식에서 button1 대신에 view 자체를 사용할 수도 있다
@ 계산기
이제 새로운 프로젝트를 생성해서 계산기를 작성해보자
우선 버튼을 생성한다
이제 MainActivity.java에서 모든 버튼들을 가져온다
그런 후 각각의 이벤트를 설정해주면 반복되는 소스가 길어지기 때문에 합칠 수 있다
위와 같이 작성되면 중복되는 구문을 줄여줄 수 있다 결과가 잘 나오는 것을 볼 수 있다
이제는 버튼을 클릭하면 화면에 보여지는 것을 만들어 본다
글자가 들어갈 Large Text를 생성하고 gravity 값을 설정해 준다
그런 후 Large Text 값을 0으로 변경한다
이제 다시 java 코드쪽으로 간다
버튼을 클릭 시 버튼값을 입력창에 넣어준다 만약에 0값이 들어있다면 0이 지워지고 입력된다
우선 텍스트를 가져온다
가져온 후 textView에 글자를 추가해주면 된다 텍스트를 넘겨주기 위해서는 setText를 이용한다
위와 같이 작성하면 잘 출력이 된다
하지만 현재는 기존의 값은 사라지고 새로운 값으로만 대체가 된다
기존의 값을 가져와서 처리한다
Integer.parseint는 왜 필요할 까?
- 처음에 0 값이 있고 숫자를 입력 시 0을 탈락 시키기 위함이다
결과를 보면 입력되는 것을 볼 수 있다
@ 사칙 연산 계산기
위의 과정을 이용해서 사칙 연산을 구현한다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
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.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btn0 = (Button) findViewById(R.id.btn0);
final Button btn1 = (Button) findViewById(R.id.btn1);
final Button btn2 = (Button) findViewById(R.id.btn2);
final Button btn3 = (Button) findViewById(R.id.btn3);
final Button btn4 = (Button) findViewById(R.id.btn4);
final Button btn5 = (Button) findViewById(R.id.btn5);
final Button btn6 = (Button) findViewById(R.id.btn6);
final Button btn7 = (Button) findViewById(R.id.btn7);
final Button btn8 = (Button) findViewById(R.id.btn8);
final Button btn9 = (Button) findViewById(R.id.btn9);
final Button btnAdd = (Button) findViewById(R.id.btnAdd);
final Button btnSub = (Button) findViewById(R.id.btnSub);
final Button btnMul = (Button) findViewById(R.id.btnMul);
final Button btnDiv = (Button) findViewById(R.id.btnDiv);
final Button btnEqual = (Button) findViewById(R.id.btnEqual);
final TextView textView = (TextView) findViewById(R.id.textView);
final Map<String, String> calc = new HashMap<String, String>();
calc.put("reset", "N");
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(v.getContext(), ((Button) v).getText(), Toast.LENGTH_SHORT).show();
String text = "";
// 숫자라면 input
if ( !((Button) v).getText().equals("+")
&& !((Button) v).getText().equals("-")
&& !((Button) v).getText().equals("/")
&& !((Button) v).getText().equals("*")
&& !((Button) v).getText().equals("=")) {
if ( calc.get("reset").equals("Y") ) {
calc.put("reset", "N");
calc.put("number1", "");
calc.put("operation", "");
text = (String) ((Button) v).getText();
textView.setText( Integer.parseInt(text) + "" );
}
else {
text = (String) textView.getText();
text += ((Button) v).getText();
textView.setText( Integer.parseInt(text) + "" );
}
}
// 연산자라면 연산자와 이전에 입력한 숫자 input
if ( ((Button) v).getText().equals("+")
|| ((Button) v).getText().equals("-")
|| ((Button) v).getText().equals("/")
|| ((Button) v).getText().equals("*")) {
calc.put("operation", (String) ((Button) v).getText());
calc.put("number1", (String) textView.getText());
textView.setText( "0" );
}
// = 이퀄 시 연산
if ( ((Button) v).getText().equals("=") ) {
int number1 = Integer.parseInt(calc.get("number1"));
int number2 = Integer.parseInt((String) textView.getText());
int result = 0;
// 연산자에 따른 연산 처리
if ( calc.get("operation").equals("+") ) {
result = number1 + number2;
}
else if ( calc.get("operation").equals("-") ) {
result = number1 - number2;
}
else if ( calc.get("operation").equals("*") ) {
result = number1 * number2;
}
else if ( calc.get("operation").equals("/") ) {
double divResult = number1 / number2;
result = (int) divResult;
}
// 리셋 값 (결과 시)
calc.put("reset", "Y");
textView.setText( result + "" );
}
}
};
btn0.setOnClickListener(clickListener);
btn1.setOnClickListener(clickListener);
btn2.setOnClickListener(clickListener);
btn3.setOnClickListener(clickListener);
btn4.setOnClickListener(clickListener);
btn5.setOnClickListener(clickListener);
btn6.setOnClickListener(clickListener);
btn7.setOnClickListener(clickListener);
btn8.setOnClickListener(clickListener);
btn9.setOnClickListener(clickListener);
btnAdd.setOnClickListener(clickListener);
btnSub.setOnClickListener(clickListener);
btnMul.setOnClickListener(clickListener);
btnDiv.setOnClickListener(clickListener);
btnEqual.setOnClickListener(clickListener);
}
}
|
cs |
'[ Developer ] > Android' 카테고리의 다른 글
[Android] 안드로이드 뒤로가기 버튼 종료 처리 (1) | 2016.07.11 |
---|---|
[Android] 안드로이드로 간단한 게시판 만들어보기 (7) | 2016.07.08 |
[Android] 안드로이드 가상머신 앱 구동 (0) | 2016.07.07 |
[Android] 안드로이드 스튜디오 프로젝트 생성 및 가상 디바이스 설치 (0) | 2016.07.07 |
[Android] 안드로이드 스튜디오 설치 (0) | 2016.06.24 |