테이블 레이아웃 / 그리드 레이아웃 / 프레임 레이아웃
테이블 레이아웃
-> 계산기 만들기 실습
-> java
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
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);
//+,-,x,/ 버튼 리스너
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;
}
});
// 숫자 버튼 10개를 대입
for (i = 0; i < numBtnIDs.length; i++) {
numButtons[i] = (Button) findViewById(numBtnIDs[i]);
}
// 숫자 버튼 10개에 대해서 클릭이벤트 처리
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();
edit2.setText(num2);
} else {
Toast.makeText(getApplicationContext(),
"먼저 에디트텍스트를 선택하세요", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
그리드 레이아웃
테이블 보다 좀더 직관적임
댓글남기기