Programming Language/Android Programming

계산기, 예약

D4tai1 2018. 9. 18.

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

댓글