Programming Language/Android Programming
계산기, 예약
1. 계산기 동작소스
- MainActivity.java 에 버튼에 대한 동작을 서술한다.
package Test;
package com.example.d4tai1.pro20180910a_6;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText edit1, edit2;
Button [] numButtons = new Button[10];
int [] numBtnIDs = {
R.id.btnNum0, R.id.btnNum1, R.id.btnNum2, R.id.btnNum3, R.id.btnNum4,
R.id.btnNum5, R.id.btnNum6, R.id.btnNum7, R.id.btnNum8, R.id.btnNum9,
};
Button btnAdd, btnSub, btnMul, btnDiv;
TextView TextResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit1 = (EditText)findViewById(R.id.Edit1);
edit2 = (EditText)findViewById(R.id.Edit2);
for (int i = 0; i < 10; i++) {
numButtons[i] = (Button) findViewById(numBtnIDs[i]);
// numButtons[0] = (Button)findViewById(R.id.btnNum0);
// 위 문장이지만 R.id.btnNum? 숫자를 넣을 수가 없어서
// 원형이 findViewById(int id) 로 안에 int형의 값이 들어간다.
// 그래서 위에서 배열로 만들어준다.
}
btnAdd = (Button)findViewById(R.id.btnAdd);
btnSub = (Button)findViewById(R.id.btnSub);
btnMul = (Button)findViewById(R.id.btnMul);
btnDiv = (Button)findViewById(R.id.btnDiv);
TextResult = (TextView)findViewById(R.id.TextResult);
for (int i = 0; i < 10; i++) {
final int index = i;
//for문을 돌 때마다 index상수를 계속만든다. (내부에서 선언했기 때문에)
numButtons[i].setOnClickListener(new View.OnClickListener() {
//0~9까지 숫자를 클릭했을 때 입력되도록
@Override
public void onClick(View v) {
if(edit1.isFocused()) {
//커서가 첫 번째 입력창에 있다면?
edit1.setText(edit1.getText().toString() + numButtons[index].getText().toString());
//numButtons[인덱스]의 인덱스가 상수가 아니면 에러가 발생한다.
//그래서 i를 사용할 수 없고 상수인 index를 사용한다.
}
else if (edit2.isFocused()) {
//커서가 두 번째 입력창에 있다면?
edit2.setText(edit2.getText().toString() + numButtons[index].getText().toString());
}
else {
}
}
});
}
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//String num1 = edit1.getText().toString();
//String num2 = edit2.getText().toString();
//위 두 개 문자열을 연산하기위해 형변환을 해준다.
int num1 = Integer.valueOf(edit1.getText().toString());
int num2 = Integer.valueOf(edit2.getText().toString());
TextResult.setText("계산결과 : " + (num1 + num2));
//위에서 num1과 num2를 변환하지 않으면 문자열이기 때문에 글자끼리 붙기만한다.
}
});
btnSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num1 = Integer.valueOf(edit1.getText().toString());
int num2 = Integer.valueOf(edit2.getText().toString());
TextResult.setText("계산결과 : " + (num1 - num2));
}
});
btnMul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num1 = Integer.valueOf(edit1.getText().toString());
int num2 = Integer.valueOf(edit2.getText().toString());
TextResult.setText("계산결과 : " + (num1 * num2));
}
});
btnDiv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num1 = Integer.valueOf(edit1.getText().toString());
int num2 = Integer.valueOf(edit2.getText().toString());
TextResult.setText("계산결과 : " + (num1 / num2));
}
});
}
}
2. 계산기 실행화면
- 더하기
- 빼기
- 곱하기
- 나누기
3. GridLayout
[1] columnCount 옵션
- 그리드레이아웃의 열의 개수를 말한다.
[2] rowCount 옵션
- 그리드레이아웃의 행의 개수를 말한다.
[3] layout_columnSpan
- [1]에서 만든 5개의 열을 합치는 것을 말한다.
[4] layout_width
4. 그리드 레이아웃보다 테이블 레이아웃이 조금 더 깔끔하고 편하다.
5. 예약
- MainActivity.java 에서 예약버튼 및 라디오에 대한 동작을 서술한다.
- 날짜설정 라디오를 누르면 달력이 나온다.
- 시간 설정 라디오를 누르면 시간이 나온다.
6. 예약 소스
package com.example.d4tai1.pro20180917a_2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.Chronometer;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.TimePicker;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
Chronometer chrono;
Button btnStart, btnEnd;
RadioButton rdoCal, rdoTime;
CalendarView calView;
TimePicker tPicker;
TextView tvYear, tvMonth, tvDay, tvHour, tvMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chrono = (Chronometer) findViewById(R.id.chrono);
btnStart = (Button) findViewById(R.id.btnStart);
btnEnd = (Button) findViewById(R.id.btnEnd);
rdoCal = (RadioButton) findViewById(R.id.rdoCal);
rdoTime = (RadioButton) findViewById(R.id.rdoTime);
calView = (CalendarView) findViewById(R.id.calenderView1);
tPicker = (TimePicker) findViewById(R.id.timePicker1);
tvYear = (TextView) findViewById(R.id.tvYear);
tvMonth = (TextView) findViewById(R.id.tvMonth);
tvDay = (TextView) findViewById(R.id.tvDay);
tvHour = (TextView) findViewById(R.id.tvHour);
tvMinute = (TextView) findViewById(R.id.tvMinute);
calView.setVisibility(View.INVISIBLE);
//보이지 않도록 해주는 메소드이다.
tPicker.setVisibility(View.INVISIBLE);
rdoCal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calView.setVisibility(View.VISIBLE);
//보이도록 해주는 메소드이다.
tPicker.setVisibility(View.INVISIBLE);
//보이지 않도록 해주는 메소드이다.
}
});
rdoTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calView.setVisibility(View.INVISIBLE);
//보이지 않도록 해주는 메소드이다.
tPicker.setVisibility(View.VISIBLE);
//보이도록 해주는 메소드이다.
}
});
}
}
'Programming Language > Android Programming' 카테고리의 다른 글
| 메뉴 라디오버튼 (3) | 2018.10.09 |
|---|---|
| 메뉴버튼 (0) | 2018.10.09 |
| 레이아웃 (0) | 2018.09.14 |
| 체크박스, 스위치, 토글, 라디오 (0) | 2018.09.04 |
| 계산기 (0) | 2018.09.03 |
댓글