앱인벤터 시계 컴포넌트
앱인벤터의 컴포넌트들을 이해와 실제 예제를 통해 실습을 통해 모바일 앱 개발에 활용도를 높이고자 한다. 시계 컴포넌트는 스마트폰의 내부 시계를 사용하여 시간을 제공하는 보이지 않는 컴포넌트이다. 시계 컴포넌트는 규칙적으로 설정된 간격으로 타이머를 작동시키고 계산, 동작 및 변환을 수행할 수 있도록 제공한다.
날짜 선택기 및 시간 선택기와 같은 날짜 및 시간에 대한 작업은 클럭의 메서드를 통해 수행된다. 날짜 및 시간은 InstantInTime 및 Duration으로 표시된다.
- 인스턴트: 년, 월, 일, 시간, 분 및 초로 구성된다. MakeInstant, Millis에서 MakeInstant 및 MakeInstantFromParts 메서드를 사용하여 인스턴트 메시지를 만들 수 있다.
- 기간: 인스턴스 간에 경과된 시간(밀리초)이다. Duration은 Duration 메서드로 얻을 수 있다.
인스턴스는 장치의 로컬 시간대에 있다고 가정한다. 이 값을 밀리초로 변환하거나 밀리초 단위로 변환하면 해당 인스턴스의 밀리초가 UTC(그리니치 표준시)로 1970년 1월 1일부터 계산된다.
인스턴트 메시지를 텍스트로 변환하는 방법도 사용할 수 있다. 허용 가능한 패턴은 빈 문자열 MM/dd/YYYY HH:mm:ssa 또는 MMM d, yyyy HH:mm이다. 빈 문자열은 기본 형식인 FormatDateTime의 경우 "MMMMd, yyyy HH:mm:ssa", FormatDate의 경우 "MMMMd, yyyy"를 제공한다. 가능한 모든 형식을 보려면 아래 글을 참조바란다.
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
SimpleDateFormat (Java Platform SE 7 )
Parses text from a string to produce a Date. The method attempts to parse text starting at the index given by pos. If parsing succeeds, then the index of pos is updated to the index after the last character used (parsing does not necessarily use all charac
docs.oracle.com
날짜 및 시간 조합에 대한 참고 사항: 한 인스턴트로부터의 날짜와 다른 인스턴트로부터의 시간을 결합하려면(예: DatePicker 및 TimePicker) 요소를 텍스트로 추출하고 텍스트를 사용하여 새 인스턴트 메시지를 만든다. 예:
시계 컴포넌트
팔레트의 센서 부분에서 시계 컴포넌트는 보이지 않는 컴포넌트로, 뷰어에 drag&drop하면 화면에는 아무것도 표시되지 않으며 아래에 보이지 않는 컴포넌트에 표시된다. 시계 컴포넌트를 활용하여 스톱워치를 만들어보자 .
화면에 분, 초가 1초마다 업데이트가 된다.
시계 컴포넌트를 활용하여 스톱와치 앱을 만들 계획이다.
대략적인 화면 디자인은 아래 그림과 같다.
https://mywaycoding.tistory.com/36
팔레트
앱인벤터 시계 컴포넌트는 '센서'에 있다. 시계 컴포넌트를 오른쪽 뷰어에 Drag&Drop하면 추가된다.
뷰어
컴포넌트들을 추가했을 때, 기본적으로 사각형이 뷰어 화면에 출력된다.
뷰어에는 보이는 컴포넌트로 레이블 컴포넌트 3개와 수평배치 그리고 버튼 컴포넌트 2개와 수평배치 그리고 목록뷰 컴포넌트와 시계 컴포넌트를 활용하여 스톱워치 앱을 구성하였다.
컴포넌트
컴포넌트에는 Screen1아래에 버튼 컴포넌트, 레이블 컴포넌트 그리고 NFC 컴포넌트로 구성된다.
- 시계 컴포넌트
- 레이블 컴포넌트 3개와 수평배치
- 버튼 컴포넌트 2개와 수평배치
- 목록뷰 컴포넌트
시계 컴포넌트 속성값
시계 컴포넌트 속성값에는 타이머항상작동, 타이머활성화여부 그리고 타이머간격 속성값이 있다.
. 타이머항상작동 : 참값이면, 응용앱이 보여지지 않았을 때에도 타이머는 작동한다.
. 타이머활성화여부 : Timer 이벤트가 동작할지 여부를 결정한다. 참값이면 타이머 이벤트가 동작하고, 거짓값이면 동작하지 않는다.
. 타이머간격 : 연속적으로 Timer 이벤트가 발생하는 간격을 정의한다.
* 시간이 지남에 따라 드리프트(지연)가 발생할 수 있으며, 앱 또는 전화기의 다른 프로세스가 사용 중인 경우 시스템이 여기에 지정된 타이밍을 지켜지지 않을 수 있다.
시계 컴포넌트 이벤트 블럭들
. 시계 컴포넌트 타이머가작동할때 블록
타이머 간격이 종료가 되면 '타이머가작동할때' 이벤트 블록이 실행된다.
시계 컴포넌트 호출 블럭들
시계 컴포넌트의 호출 블럭에는 Add(Years, Months, Weeks, Days, Hours, Minutes, Seconds, Duration), 일가져오기, 기간가져오기, 기간을일로바꾸기, 기간을시로바꾸기, 기간을분으로바꾸기, 기간을초로바꾸기, 기간을주로바꾸기, 날짜형식으로바꾸기, 날짜시간형식으로바꾸기, 시간형식으로바꾸기, 밀리초가져오기, 시가져오기, 날짜만들기, 인스턴트만들기, 밀리초로인스턴트만들기, 조합으로인스턴트만들기, 시간만들기, 분가져오기, 월가져오기, 월이름가져오기, 현재시각인스턴트로가져오기, 초가져오기, 시스템시간가져오기, 요일가져오기, 요일이름가져오기, 연도가져오기 등이 있다.
. 시계 컴포넌트 Add(Years, Months, Weeks, Days, Hours, Minutes, Seconds, Duration) 호출 블록
. 지정된 인스턴트 후, 며칠(년, 월, 주, 일, 시, 분, 초, 기간) 후 시간을 반환한다.
. 시계 컴포넌트 일가져오기 호출 블록
. 인자값 인스턴트에서 월의 해당 날짜를 반환하는 블록이다.
. 시계 컴포넌트 가간가져오기 호출 블록
. 시작 인자값에서 끝 인자값까지의 기간을 밀리초로 반환한다.
. 시계 컴포넌트 기간을일로바꾸기, 기간을시로바꾸기, 기간을분으로바꾸기, 기간을초로바꾸기, 기간을주로바꾸기, 호출 블록
. 밀리초를 날짜로 변환하여 기간을 반환한다.
. 밀리초를 시로 변환하여 기간을 반환한다.
. 밀리초를 분으로 변환하여 기간을 반환한다.
. 밀리초를 초로 변환하여 기간을 반환한다.
. 밀리초를 주로 변환하여 기간을 반환한다.
. 시계 컴포넌트 날짜형식으로바꾸기, 날짜시간형식으로바꾸기, 시간형식으로바꾸기 호출 블록
. 지정한 패턴을 사용하여 인스턴트 메시지를 날짜 문자열로 변환하고 형식을 지정한다.
. 지정한 패턴을 사용하여 인스턴트 메시지를 날짜시간 문자열로 변환하고 형식을 지정한다.
. 지정한 인스턴트를 지정된 패턴의 문자열로 변환하고 포맷하여 반환한다.
. 패턴 인자값은 위에 SimpleDateFormat 링크를 참조하기 바란다.
. 시계 컴포넌트 밀리초가져오기, 시가져오기 호출 블록
. 1970년 이후 밀리초 단위로 측정된 시간을 반환한다.
. 지정된 날짜에 대한 시간을 반환한다.
. 시계 컴포넌트 날짜만들기, 인스턴트만들기, 밀리초로인스턴트만들기, 조합으로인스턴트만들기, 시간만들기 호출 블록
. UTC에서 년, 월, 일로 지정된 시간을 반환한다. 월 필드의 유효 값은 1-12이고 일 필드의 유효 값은 1-31이다.
. MM/dd/YYYH:mm:ss 또는 MM/dd/YYYY 또는 hh:mm로 지정된 시간을 반환한다.
. UTC에서 1970년 이후 밀리초로 지정된 시간을 반환한다.
. UTC에서 년, 월, 날짜, 시간, 분, 초로 지정된 시간을 반환한다.
. UTC에서 시간, 분, 초로 지정된 시간을 반환한다.
. 시계 컴포넌트 분가져오기, 월가져오기, 월이름가져오기, 현재시각인스턴트로가져오기, 초가져오기, 시스템시간가져오기, 요일이름가져오기, 연도가져오기 호출 블록
. 인자값으로 주어진 인스턴트의 분의 수를 반환한다.
. 인자값으로 주어진 인스턴트의 월의 수을 반환한다.
. 인자값으로 주어진 인스턴트의 월의 이름을 반환한다.
. 스마트폰의 시계에서 읽은 현재 인스턴트 시간을 반환한다.
. 인자값으로 주어진 인스턴트의 초를 반환한다.
. 스마트폰의 내부 시간을 반환한다.
. 인자값으로 주어진 인스턴트의 요일을 반환한다.
. 인자값으로 주어진 인스턴트의 연도를 반환한다.
시계 컴포넌트 가져오기/지정하기 블럭들
시계 컴포넌트에는 타이머항상작동, 타이머활성화여부, 타이머간격 가져오기/지정하기 블록이 있으며, 타이머 가져오기 블록이 있다.
. 시계 컴포넌트 타이머항상작동 가져오기/지정하기 블럭
시계 컴포넌트의 속성값 중, 타이머항상작동값을 가져오거나, 지정하는 블록이다. 지정하는 값은 참값, 거짓값 블록이다.
. 시계 컴포넌트 타이머활성화여부 가져오기/지정하기 블럭
시계 컴포넌트의 속성값 중, 타이머활성화여부 속성값을 가져오거나, 지정하는 블록이다. 지정하는 값은 참값, 거짓값 블록이다.
. 시계 컴포넌트 타이머간격 가져오기/지정하기 블럭
시계 컴포넌트의 속성값 중, 타이머간격 속성값을 가져오거나, 지정하는 블록이다. 지정하는 값은 밀리초 숫자 값이다.
이상으로 앱인벤터 시계 컴포넌트 블럭에 대해 간략히 살펴보았다. 좀더 자세히 확인하기 싶으면, NFC 앱을 통해 블럭들을 하나씩 사용해보면서 블럭의 활용 용도 등을 파악하면 좋을 것 같다. 눈으로 보는 것보다 직접 해보는게 여러모로 코딩하는데 이해하고 코딩 실력이 향상되는데 도움이 된다.
Just Do it!!!
Just Drag&Drop!!!
댓글