250 likes | 393 Views
앱창작터. To be an Android Expert. 안드로이드 여대생 기초 과정. Simple Calculator - Initial Implementation. 문양세 , 최미정 강원대학교 IT 대학 컴퓨터학부. 초기계산기에 두뇌를 심어줍시다 ~. 변수 선언. first : 초기 상태인 경우에 true mAfter : 직전 계산 값을 유지함 operator : 연산자 지정 ( 저장 ) dotpress : dot(“.”) 인 눌린 경우에 true
E N D
앱창작터 To be an Android Expert • 안드로이드여대생 기초 과정 Simple Calculator - Initial Implementation 문양세, 최미정 강원대학교 IT대학 컴퓨터학부
변수 선언 first : 초기 상태인 경우에 true mAfter : 직전 계산 값을 유지함 operator : 연산자 지정(저장) dotpress : dot(“.”)인 눌린 경우에 true result: : 연산 결과를 출력하기 위한 TextView
OnClickListener등록 – 설명 • 18개의 버튼에 대해 이벤트를 할당한다. • 각 버튼의 객체는 findViewById()를 통해 얻어오고,이벤트 리스너mClickListener()을등록한다. • 18개의 버튼은 다음과 같다. • R.id.btn_back: 백스페이스 버튼 • R.id.btn_c: 클리어(“C”) 버튼 • R.id.btn_num0 ~ R.id.btn_num9: 숫자(“0” ~ “9”) 버튼 • R.id.btn_plus, R.id.btn_minus, R.id.btn_mul, R.id.btn_div: 사칙연산 버튼 • R.id.btn_equal: 등호(“=“) 버튼 • R.id.btn_dot: dot(“.”) 버튼
OnClickListener정의 – 설명 (1/3) • 백 스페이스 버튼(R.id.btn_back)이 눌렸을 때, backPress() 메소드를 호출한다. • 클리어(“C”)버튼(R.id.btn_c)이 눌렸을 때,각 변수를 초기화 한다. (화면은 “0.”으로 초기화한다.) 햅틱 효과(버튼을 누르면 짧게 진동 발생)를 발생시키기 위해, VIBRATOR_SERVICE를 등록한다.
OnClickListener정의 – 설명 (2/3) • 사칙연산(+, -, x, /, =) 버튼(예:R.id.plus)이 눌렸으면, SachickPress() 메소드를 호출하되, 해당 연산을 인수로 넘겨준다. 숫자 버튼(예: R.id.num0)을 눌렀을 때, numPress() 메소드를 호출하되, 해당 숫자를 인수로 넘겨준다.
OnClickListener정의 – 설명 (3/3) 도트(dot) 버튼(R.id.btn_dot)이 눌렸으면, (a) dotpress= true로 하여소수점 이하임을 나타내고,(b) 초기 상태(first)를 false로 한다.
backPress()– 설명 (1/3) • TextView값이 두 글자인데 백 스페이스가 눌려졌으면, 초기 값과 같아지므로 초기상태로 만든다. (참고: “.” 때문에 기본이 두 글자임) • 예: “9.”에서 9를 지우면 “0.”으로 만든다. 현재 TextView의 값을 가져와 양쪽 여백을 제거한다.
backPress()– 설명 (2/3) 마지막이 “.”라면(소수점 이하 자리가 없다면), 도트가 눌리지 않은 상태로 되돌린다. 마지막이 “.”이 아니라면(소수점 이하 자리가 있다면),맨 마지막 숫자 하나를 지운다. 도트가 눌려진 상태에서 백 스페이스가 눌렸다면...
backPress()– 설명 (3/3) 만약 “.”가 눌리지 않은 상태에서 백 스페이스가 눌렸다면,마지막 두 글자를 지우고 뒤에 “.”을 붙인다.예를 들어, “739.” 이었다면, 뒤의 “9.”을 지우고 “73”에다 “.”을 붙여서 “73.”을 만든다. 도트가 눌리지 않은 상태에서 백 스페이스가 눌렸다면...
numPress()– 설명 (1/2) 초기상태에서 “0”이 눌렸다면, 그냥 “0.”을 유지하고, 초기상태(first = true)도 유지한다. 초기상태에서 숫자(“1” ~ “9”)가 눌렸다면,해당 숫자에 “.”을 붙여서 나타내고,초기상태에서 벗어난다(first = false). 초기 상태(first = true)에서 숫자가 눌렸다면...
numPress()– 설명 (2/2) TextView의 내용을 가져와 양쪽 공백을 제거한다. 소수점 이하라면, 해당 숫자를 마지막에 붙여 나타낸다.(예: “739.” “739.4”) 소수점이 아니라면, 맨 마지막의 점(“.”)을 없앤 후, 해당 숫자를 붙이고, 다시금 마지막에 점(“.”)을 넣어 나타낸다.(예: “739.” “7395.”) 초기가 아닌 상태(first = false)에서 숫자가 눌렸다면...
SachickPress()– 설명 (1/3) • TextView에 있는 내용을 실수(Double)로 변환하여,이를 change 변수에 저장한다. 초기 상태(first = true)에서 “=“이 눌렸다면,그냥 0을 출력하고, 초기상태를 유지한다.
SachickPress()– 설명 (2/3) • 연산자가 “=“이 아니면, operator 변수에 해당 연산자를 저장해 둔다. 주어진 연산자(operator)에 따라, 이전 값(mAfter)과 현재 값(change)에 대한 사칙연산을 수행한다.
SachickPress()– 설명 (3/3) 소수점 이하 값이 있는지 체크한다. (ii에 소수점 이하 자리가 들어간다.) 소수점 이하 자리가 없으면,결과 + “.” 을출력한다. 소수점 이하 자리가 있으면,해당 결과를 그냥 출력한다. 계산이 끝났으므로, 초기상태로 돌린다. 소수점 이하 값을 처리한다.