본문 바로가기
App/Android Java

Android_Java(8) - CalcuWithTableLayout

by SeleniumBindingProtein 2022. 2. 7.
728x90
반응형

1. 레이아웃 
    1) ViewGroup 클래스로부터 상속 받음
    2) 내부에 무엇을 담는 용도로 사용
    3) 레이아웃 중 가장 많이 사용되는 것은 리니어레이아웃 
    4) 자주 사용되는 속성 
        - orientation : 레이아웃 안에 배치할 위젯의 수직 또는 수평 방향 설정 
        - gravity : 레이아웃 안에 배치할 위젯의 정렬 방향 설정 (좌측, 우측, 중앙)
        - layout_gravity : 자신의 위치를 부모의 어디 쯤에 위치시킬지를 결정
        - ....
    5) 종류
        - 리니어레이아웃 (선형 레이아웃) 
            - 왼쪽 위부터 아래쪽 또는 오른쪽으로 차례로 배치
        - 렐러티브레이아웃 (상대 레이아웃)
            - 위젯 자신이 속한 레이아웃의 상하좌우의 위치를 지정하여 배치 
            - 다른 위젯으로부터 상대적인 위치 지정 
        - 테이블 레이아웃  
            - 위젯을 행과 열의 개수를 지정한 테이블 형태로 배치 
            - 표 형태로 배치할 때 사용함 
            - 


<MainActivity.java>

<activity_main.xml>

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/tableLayout"
    tools:context=".MainActivity">

    <TableRow android:layout_weight="1">
        <EditText
            android:layout_weight="1"
            android:id="@+id/Edit1"
            android:layout_span="5"
            android:hint="숫자1 입력"/>
    </TableRow>

    <TableRow android:layout_weight="1">
        <EditText
            android:layout_weight="1"
            android:id="@+id/Edit2"
            android:layout_span="5"
            android:hint="숫자2 입력"/>
    </TableRow>
    <TableRow
        android:layout_weight="1">
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum0"
            android:text="0"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum1"
            android:text="1"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum2"
            android:text="2"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum3"
            android:text="3"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum4"
            android:text="4"/>
    </TableRow>
    <TableRow
        android:layout_weight="1">
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum5"
            android:text="5"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum6"
            android:text="6"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum7"
            android:text="7"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum8"
            android:text="8"/>
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnNum9"
            android:text="9"/>
    </TableRow>
    <TableRow
        android:layout_weight="1">
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnAdd"
            android:layout_margin="5dp"
            android:layout_span="5"
            android:text="더하기"/>
    </TableRow>
    <TableRow
        android:layout_weight="1">
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnSub"
            android:layout_margin="5dp"
            android:layout_span="5"
            android:text="빼기"/>
    </TableRow>
    <TableRow
        android:layout_weight="1">
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnMul"
            android:layout_margin="5dp"
            android:layout_span="5"
            android:text="곱하기"/>
    </TableRow>
    <TableRow
        android:layout_weight="1">
        <Button
            android:layout_weight="1"
            android:id="@+id/BtnDiv"
            android:layout_margin="5dp"
            android:layout_span="5"
            android:text="나누기"/>
    </TableRow>

    <TableRow
        android:layout_weight="1">
        <TextView
            android:id="@+id/TextResult"
            android:layout_margin="5dp"
            android:layout_span="5"
            android:text="계산 결과 : "
            android:textColor="@color/black"
            android:textSize="20dp"/>
    </TableRow>
</TableLayout>
package kr.co.calcuwithtablelayout;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    EditText edit1, edit2;
    Button btnAdd, btnSub, btnMul, btnDiv;
    TextView textResult;
    String num1, num2;
    Integer result;

    //10개 숫자버튼의 배열
    Button[] numButtons = new Button[10];

    //10개 숫자 버튼의 id 값 배열
    Integer[] 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};
    int i;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setIcon(R.drawable.ic_launcher);

        setTitle("테이블 레이아웃 계산기");
        edit1 = findViewById(R.id.Edit1);
        edit2 = findViewById(R.id.Edit2);

        btnAdd = findViewById(R.id.BtnAdd);
        btnSub = findViewById(R.id.BtnSub);
        btnMul = findViewById(R.id.BtnMul);
        btnDiv = findViewById(R.id.BtnDiv);

        textResult = findViewById(R.id.TextResult);

        btnAdd.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1)+Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());

                return false;
            }
        });

        btnSub.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1)-Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());

                return false;
            }
        });

        btnMul.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1)*Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());

                return false;
            }
        });

        btnDiv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1)/Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());

                return false;
            }
        });

        //숫자 버튼 10개를 대입
        for(i=0;i<numBtnIDs.length;i++){
            numButtons[i] = findViewById(numBtnIDs[i]);
        }

        //숫자 버튼 10개에 클릭이벤트 처리
        for(i=0;i<numBtnIDs.length;i++){
            final int index;    //선택된 버튼의 index 정보
            index = i;
            numButtons[index].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //포커스 되어 있는 에디트 텍스트에 숫자 추가
                    if(edit1.isFocused() == true){
                        num1 = edit1.getText().toString() + numButtons[index].getText().toString();
                        edit1.setText(num1);
                    }
                    else if(edit2.isFocused() == true){
                        num2 = edit2.getText().toString() + numButtons[index].getText().toString();
                        edit2.setText(num2);
                    }
                    else {
                        Toast.makeText(getApplicationContext(), "먼저 에디트텍스트를 선택해주세요.", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
}

[결과 출력]

728x90
반응형

'App > Android Java' 카테고리의 다른 글

Android_Java(10) -VeiwFlipperApp  (0) 2022.02.08
Android_Java(9) - DateTimeApp  (0) 2022.02.08
Android_Java(7) - RadioBtn  (0) 2022.02.07
Android_Java(6) - VolumeControlView  (0) 2022.02.07
Android_Java(5) - MyViewEvent  (0) 2022.02.07

댓글