[ 코드에 들어가기 전에 ]
- 코드에서 중요하게 생각하는 부분과, 새로 공부하는 부분만 발췌해서 부연 설명
- 코드 전체를 첨부하기에는 비슷한 부분의 반복이고, 읽기도 힘들고, 길어지니 링크 참조
- https://miny-genie.tistory.com/39
<!-- XML Code -->
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:format="예약에 걸린 시간 %s"
android:textSize="15sp"
android:layout_margin="10dp"
android:background="#AAAAAA">
</Chronometer> <!-- chronometer1 -->
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">
<TimePicker
android:id="@+id/timePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TimePicker> <!-- timePicker1 -->
<DatePicker
android:id="@+id/datePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</DatePicker> <!-- datePicker1 -->
</FrameLayout>
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
Chronometer
크로노미터(chronometer)는 타이머 형식의 위젯이다. chronometer가 작동하면 작동한 순간부터 시간이 기록된다.
android:format="예약에 걸린 시간 %s"
format 속성으로 chronometer 타이머 앞의 문자열을 지정하는 코드이다.
TimePicker
FrameLayout이라 잘 보이지는 않지만, 밑에 실행 결과에서 시계 모양의 위젯이다.
시계추를 드래그해서 시간을 정할 수 있으며, 디지털 값 입력으로도 시간을 선택할 수 있다.
DatePicker
FrameLayout이라 잘 보이지는 않지만, 밑에 실행 결과에서 달력 모양의 위젯이다.
좌우 슬라이드로 월을 넘길 수 있으며, 년 월 일을 선택할 수 있다.
// JAVA Code
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
chronometer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rGroup.setVisibility(View.VISIBLE);
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
chronometer.setTextColor(Color.RED);
}
});
~~~~~~~~~~~~~~~~~~~~ ( 생략 ) ~~~~~~~~~~~~~~~~~~~~
numYear.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
chronometer.stop();
chronometer.setTextColor(Color.BLACK);
timePicker.setVisibility(View.INVISIBLE);
datePicker.setVisibility(View.INVISIBLE);
rGroup.setVisibility(View.INVISIBLE);
numYear.setText(Integer.toString(datePicker.getYear()));
numMonth.setText(Integer.toString(datePicker.getMonth()+1));
numDay.setText(Integer.toString(datePicker.getDayOfMonth()));
numTime.setText(Integer.toString(timePicker.getCurrentHour()));
numMinute.setText(Integer.toString(timePicker.getCurrentMinute()));
return false;
}
});
}
chronometer.setBase(SystemClock.elapsedRealtime());
elapsed는 ~만큼 경과했다라는 의미를 가지고 있다.
elapsedRealtime() 함수에서 앱이 실행된 시점을 기준으로 얼만큼의 시간이 지났는지 milisecond로 리턴한다.
실행 직후에는 0을 리턴하지만, 1초마다 1000을 리턴한다.
setOnLongClickListener()
setOnClickListenr()와 비슷한 함수로 길게 클릭하면 반응하는 함수이다.
numMonth.setText(Integer.toString(datePicker.getMonth()+1));
배열처럼 월은 0부터 시작하는 것 같다. 그러니까 1월을 고르면 0을, 8월을 고르면 7을 리턴한다.
따라서 우리가 원하는 월 값을 얻으려면 1을 더해줘야 한다.
'학교 공부 > 안드로이드 프로그래밍' 카테고리의 다른 글
직접 풀어보기 7-1 (교재 P.295) (0) | 2022.05.03 |
---|---|
직접 풀어보기 6-2 (교재 P.259) (1) | 2022.03.31 |
직접 풀어보기 5-5 (교재 P.232) (0) | 2022.03.31 |
직접 풀어보기 5-4 (교재 P.221) (0) | 2022.03.31 |
직접 풀어보기 5-3 (교재 P.216) (0) | 2022.03.31 |