728x90
반응형
![]() |
|
한빛아카데미 IT COOKBOOK 276 Android Studio를 활용한 안드로이드 프로그래밍 5판 p.225 실습 5-2
테이블레이아웃을 활용한 계산기 앱 만들기
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:orientation="vertical"
tools:context=".MainActivity">
<TableRow>
<EditText
android:id="@+id/Edit1"
android:layout_span="5"
android:hint="숫자1 입력" />
</TableRow>
<TableRow>
<EditText
android:id="@+id/Edit2"
android:layout_span="5"
android:hint="숫자2 입력" />
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnNum0"
android:layout_weight="1"
android:text="0" />
<Button
android:id="@+id/BtnNum1"
android:layout_weight="1"
android:text="1" />
<Button
android:id="@+id/BtnNum2"
android:layout_weight="1"
android:text="2" />
<Button
android:id="@+id/BtnNum3"
android:layout_weight="1"
android:text="3" />
<Button
android:id="@+id/BtnNum4"
android:layout_weight="1"
android:text="4" />
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnNum5"
android:layout_weight="1"
android:text="5" />
<Button
android:id="@+id/BtnNum6"
android:layout_weight="1"
android:text="6" />
<Button
android:id="@+id/BtnNum7"
android:layout_weight="1"
android:text="7" />
<Button
android:id="@+id/BtnNum8"
android:layout_weight="1"
android:text="8" />
<Button
android:id="@+id/BtnNum9"
android:layout_weight="1"
android:text="9" />
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnAdd"
android:layout_margin="5dp"
android:layout_span="5"
android:text="더하기" />
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnSub"
android:layout_margin="5dp"
android:layout_span="5"
android:text="빼기" />
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnMul"
android:layout_margin="5dp"
android:layout_span="5"
android:text="곱하기" />
</TableRow>
<TableRow>
<Button
android:id="@+id/BtnDiv"
android:layout_margin="5dp"
android:layout_span="5"
android:text="나누기" />
</TableRow>
<TableRow>
<TextView
android:id="@+id/TextResult"
android:layout_margin="5dp"
android:layout_span="5"
android:text="계산 결과 : "
android:textColor="#FF0000"
android:textSize="20dp" />
</TableRow>
</TableLayout>
이렇게 코딩하고 나면 아래와 같은 화면이 출력되고 android:layout_weight="1" 속성을 추가해 주어야 숫자 버튼들의
크기가 동일하게 만들어집니다.
이 코딩 결과에서 숫자 입력 2개와 연산자 버튼 4개 삐져나오는 게 싫으신 분들은
android:layout_weight="1"을 각 버튼에 추가해주시면 되겠습니다.
MainActivity.java 코딩
package com.cookandroid.project5_2tablelayout;
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;
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};
int i;
@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);
btnMul = (Button) findViewById(R.id.BtnMul);
btnDiv = (Button) findViewById(R.id.BtnDiv);
textResult = (TextView) findViewById(R.id.TextResult);
btnAdd.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
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() {
public boolean onTouch(View arg0, MotionEvent arg1) {
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() {
public boolean onTouch(View arg0, MotionEvent arg1) {
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() {
public boolean onTouch(View arg0, MotionEvent arg1) {
num1 = edit1.getText().toString();
num2 = edit2.getText().toString();
result = Integer.parseInt(num1) / Integer.parseInt(num2);
textResult.setText("계산 결과 : " + result.toString());
return false;
}
});
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() {
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();
} else {
Toast.makeText(getApplicationContext(), "먼저 에디트텍스트를 입력하세요.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
Android Studio AVD 실행 결과
728x90
반응형
'Dev > 안드로이드' 카테고리의 다른 글
안드로이드 프로그래밍 6장 직접 풀어보기 6-1 (0) | 2020.05.26 |
---|---|
안드로이드 프로그래밍 6장 실습 6-1 (0) | 2020.05.24 |
안드로이드 프로그래밍 4장 직접 풀어보기 4-3 (0) | 2020.05.11 |
안드로이드 프로그래밍 5장 연습문제 4번 (0) | 2020.05.07 |
안드로이드 프로그래밍 4장 직접 풀어보기 4-4 (0) | 2020.05.06 |