Learn & Record
Android (아날로그 시계, 디지털 시계, 크로노미터, 타임피커, 데이트피커, 캘린더뷰, 예약 시스템 프로그램) 본문
Dev/Android
Android (아날로그 시계, 디지털 시계, 크로노미터, 타임피커, 데이트피커, 캘린더뷰, 예약 시스템 프로그램)
Walker_ 2024. 4. 23. 17:161. 아날로그시계, 디지털시계
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<AnalogClock
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<DigitalClock
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"/>
</LinearLayout>

2. 크로노미터
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:format="시간 측정 : %s"
android:gravity="center"
android:textSize="30dp"/>
</LinearLayout>
- format 속성에서 타이머 앞의 문자열을 지정
3. 타임피커, 데이트피커, 캘린더뷰
- 타임피커는 시간을, 데이트피커와 캘린더뷰는 날짜를 표시하고 조절하는 기능을 함
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TimePicker
android:timePickerMode="spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<DatePicker
android:datePickerMode="spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TimePicker
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<DatePicker
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>

4. 예약 시스템 프로그램
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:format="예약에 걸린 시간 %s"
android:textSize="20dp"
android:gravity="center"
/>
<Button
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:textStyle="bold"
android:text="예약 시작"
android:layout_height="wrap_content"/>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rdoCal"
android:text="날짜 설정 (캘린더뷰)"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RadioButton
android:id="@+id/rdoTime"
android:text="시간 설정"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RadioGroup>
<LinearLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CalendarView
android:id="@+id/calendarView1"
android:layout_width="match_parent"
android:showWeekNumber="false"
android:layout_height="wrap_content"/>
<TimePicker
android:timePickerMode="spinner"
android:id="@+id/timePicker1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:background="#9E9E9E"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="예약완료"/>
<TextView
android:id="@+id/tvYear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="0000"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="년"
/>
<TextView
android:id="@+id/tvMonth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="00"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="월"
/>
<TextView
android:id="@+id/tvDay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="00"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="일"
/>
<TextView
android:id="@+id/tvHour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="00"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="시"
/>
<TextView
android:id="@+id/tvMinute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="00"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="분 예약됨"
/>
</LinearLayout>
</LinearLayout>
package kr.jeongmo.a0423date_time
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.SystemClock
import android.view.View
import android.widget.*
class MainActivity : AppCompatActivity() {
lateinit var chronometer1 : Chronometer
lateinit var btnStart : Button
lateinit var rdoCal : RadioButton
lateinit var rdoTime : RadioButton
lateinit var calendarView1 : CalendarView
lateinit var timePicker1 : TimePicker
lateinit var btnEnd : Button
lateinit var tvYear : TextView
lateinit var tvMonth : TextView
lateinit var tvDay : TextView
lateinit var tvHour : TextView
lateinit var tvMinute : TextView
var selectYear : Int = 0
var selectMonth : Int = 0
var selectDay : Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "시간 예약"
// 버튼
btnStart = findViewById(R.id.btnStart)
btnEnd = findViewById(R.id.btnEnd)
// 크로노미터
chronometer1 = findViewById(R.id.chronometer1)
// 라디오버튼 2개
rdoCal = findViewById(R.id.rdoCal)
rdoTime = findViewById(R.id.rdoTime)
// FrameLayout의 2개 위젯
timePicker1 = findViewById(R.id.timePicker1)
calendarView1 = findViewById(R.id.calendarView1)
// 텍스트뷰 중에서 연,월,일,시,분, 숫자
tvYear = findViewById(R.id.tvYear)
tvMonth = findViewById(R.id.tvMonth)
tvDay = findViewById(R.id.tvDay)
tvHour = findViewById(R.id.tvHour)
tvMinute = findViewById(R.id.tvMinute)
// 처음에는 2개를 안 보이게 설정
timePicker1.visibility = View.INVISIBLE
calendarView1.visibility = View.INVISIBLE
rdoCal.setOnClickListener {
timePicker1.visibility = View.INVISIBLE
calendarView1.visibility = View.VISIBLE
}
rdoTime.setOnClickListener {
timePicker1.visibility = View.VISIBLE
calendarView1.visibility = View.INVISIBLE
}
// 타이머 설정
btnStart.setOnClickListener {
chronometer1.base = SystemClock.elapsedRealtime()
chronometer1.start()
chronometer1.setTextColor(Color.RED)
}
// 버튼을 클릭하면 날짜, 시간을 가져온다
btnEnd.setOnClickListener {
chronometer1.stop()
chronometer1.setTextColor(Color.BLUE)
tvYear.text = selectYear.toString()
tvMonth.text = selectMonth.toString()
tvDay.text = selectDay.toString()
tvHour.text = timePicker1.currentHour.toString()
tvMinute.text = timePicker1.currentMinute.toString()
}
calendarView1.setOnDateChangeListener { view, year, month, dayOfMonth ->
selectYear = year
selectMonth = month + 1
selectDay = dayOfMonth
}
}
}
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)