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 |
댓글