일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 함수
- 함수 선언
- R1C3
- HTML역사
- 자바 예외
- 예제
- 우아한테크
- dbms
- DoitSQL입문
- 키-값 데이터베이스
- 웹브라우저 수용도
- DoIt
- 자바
- 웹 브라우저 전쟁
- SQL
- 숫자형식오류
- 예외
- 데이터베이스
- 크롤링
- 배열 예제
- 배열 3요소
- html
- 숫자 형식
- 자바 오류
- 크롤링 오류
- DoitSQL
- 페이지분석
- SQL입문
- 생성자
- Doit입문SQL
Archives
- Today
- Total
프로그래밍
[안드로이드 자바] 그리드 계산기(GridLayout) 본문
728x90
반응형
디자인
프로젝트 설명
GridLayout으로 칸을 나눠 마치 표처럼 그린후 버튼을 배치하여 각 버튼으로 입력 및 계산이 가능하게 한다.
xml
<?xml version="1.0" encoding="utf-8"?>
<GridLayout 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:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:columnCount="5"
android:rowCount="9"
tools:context=".MainActivity">
<EditText
android:id="@+id/Edit1"
android:layout_row="0"
android:layout_column="0"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:hint="숫자1 입력"></EditText>
<EditText
android:id="@+id/Edit2"
android:layout_column="0"
android:layout_row="1"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:hint="숫자2 입력"></EditText>
<Button
android:id="@+id/BtnNum0"
android:layout_column="0"
android:layout_row="2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="0"></Button>
<Button
android:id="@+id/BtnNum1"
android:layout_column="1"
android:layout_row="2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="1"></Button>
<Button
android:id="@+id/BtnNum2"
android:layout_column="2"
android:layout_row="2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="2"></Button>
<Button
android:id="@+id/BtnNum3"
android:layout_column="3"
android:layout_row="2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="3"></Button>
<Button
android:id="@+id/BtnNum4"
android:layout_row="2"
android:layout_column="4"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="4"></Button>
<Button
android:id="@+id/BtnNum5"
android:layout_column="0"
android:layout_row="3"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="5"></Button>
<Button
android:id="@+id/BtnNum6"
android:layout_column="1"
android:layout_row="3"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="6"></Button>
<Button
android:id="@+id/BtnNum7"
android:layout_column="2"
android:layout_row="3"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="7"></Button>
<Button
android:id="@+id/BtnNum8"
android:layout_column="3"
android:layout_row="3"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="8"></Button>
<Button
android:id="@+id/BtnNum9"
android:layout_column="4"
android:layout_row="3"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="9"></Button>
<Button
android:id="@+id/BtnAdd"
android:layout_width="392dp"
android:layout_row="4"
android:layout_column="0"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:layout_margin="5dp"
android:text="더하기"></Button>
<Button
android:id="@+id/BtnSub"
android:layout_column="0"
android:layout_row="5"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:text="빼기"
android:layout_margin="5dp"></Button>
<Button
android:id="@+id/BtnMul"
android:layout_column="0"
android:layout_row="6"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:text="곱하기"
android:layout_margin="5dp"></Button>
<Button
android:id="@+id/BtnDiv"
android:layout_column="0"
android:layout_row="7"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:text="나누기"
android:layout_margin="5dp"></Button>
<TextView
android:id="@+id/TextResult"
android:layout_column="0"
android:layout_row="8"
android:layout_columnSpan="5"
android:layout_gravity="fill_horizontal"
android:text="계산결과"
android:textSize="20dp"
android:textColor="#ff0000"></TextView>
</GridLayout>
Mainactivity.java
package com.example.gridcalc;
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;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText edit1, edit2;
Button btnAdd, btnSub, btnMul, btnDiv;
TextView textResult;
String num1, num2;
Integer result;
int i;
Button[] numButtons = new Button[10];
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 };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("그리드 레이아웃 계산기");
edit1 = (EditText)findViewById(R.id.Edit1);
edit2 = (EditText)findViewById(R.id.Edit2);
btnAdd = (Button)findViewById(R.id.BtnAdd);
btnSub = (Button)findViewById(R.id.BtnSub);
btnDiv = (Button)findViewById(R.id.BtnDiv);
btnMul = (Button)findViewById(R.id.BtnMul);
textResult = (TextView)findViewById(R.id.TextResult);
for(i=0; i<numBtnIDs.length; i++) {
numButtons[i] = (Button) findViewById(numBtnIDs[i]);
}
for(i=0; i<numBtnIDs.length; i++) {
final int index;
index = i;
numButtons[index].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
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();
}
}
});
}
btnAdd.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
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 v, MotionEvent event) {
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 v, MotionEvent event) {
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 v, MotionEvent event) {
num1 = edit1.getText().toString();
num2 = edit2.getText().toString();
if (num1.trim().equals("") || num2.trim().equals("")) {
Toast.makeText(getApplicationContext(), "값을 입력하세요", Toast.LENGTH_SHORT).show();
} else { if (num2.trim().equals("0")) {
Toast.makeText(getApplicationContext(), "0으로 나눌 수 없습니다.", Toast.LENGTH_SHORT).show();
} else {
result = Integer.parseInt(num1) / Integer.parseInt(num2);
textResult.setText("계산결과 : " + result.toString());
}
}
return false;
}
});
}
}
728x90
반응형
'안드로이드 > 안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 자바] 예약 어플 만들기(Chronometer, TimePicker, DatePicker, CalendarView) (0) | 2022.05.17 |
---|---|
[안드로이드 자바] 타임피커, 캘린더뷰를 이용한 예약 시스템 만들기(Chronometer, Timpicker, CalendarView) (0) | 2022.05.17 |
[안드로이드 자바] 라디오버튼으로 이미지 선택 출력(visible, invisible) (0) | 2021.12.09 |
[안드로이드 자바] 기본 계산기 (0) | 2021.12.09 |
[안드로이드 자바] xml 요소 배치하기(텍스트뷰, 버튼, 스위치, 레이팅바) (0) | 2021.12.03 |
Comments