이 튜토리얼에서는 안드로이드 앱에서 날짜 선택기(DatePickerDialog)와 시간 선택기(TimePickerDialog)를 사용해 사용자가 원하는 날짜와 시간을 선택하도록 구현하는 방법을 단계별로 알아봅니다. 버튼을 누르면 먼저 날짜 선택 대화상자가 열리고, 날짜를 확정하면 이어서 시간 선택 대화상자가 나타난 뒤 최종 결과가 화면에 출력되는 흐름입니다.
1단계 — 새 프로젝트 만들기
안드로이드 스튜디오에서 File → New Project 메뉴로 이동한 뒤, 새 프로젝트 생성에 필요한 모든 항목을 입력하여 프로젝트를 만듭니다.
2단계 — 레이아웃 작성 (res/layout/activity_main.xml)
아래 코드를 activity_main.xml에 추가합니다. 가운데 정렬된 버튼 하나와, 선택된 날짜·시간을 표시할 TextView 하나로 구성된 간단한 상대 레이아웃(RelativeLayout)입니다.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btnPick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="30dp" android:text="Pick Date and Time"/> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="16sp" android:textStyle="bold"/> </RelativeLayout>
3단계 — MainActivity.java 작성
아래 코드를 MainActivity.java에 추가합니다. MainActivity가 DatePickerDialog.OnDateSetListener와 TimePickerDialog.OnTimeSetListener 인터페이스를 함께 구현하여, 날짜가 선택되면 콜백(onDateSet)에서 시간 선택 대화상자를 이어서 띄우고, 시간까지 선택되면 onTimeSet에서 최종 결과를 TextView에 출력하는 구조입니다.
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
TextView textView;
Button button;
int day, month, year, hour, minute;
int myday, myMonth, myYear, myHour, myMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
button = findViewById(R.id.btnPick);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, MainActivity.this,year, month,day);
datePickerDialog.show();
}
});
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
myYear = year;
myday = day;
myMonth = month;
Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, MainActivity.this, hour, minute, DateFormat.is24HourFormat(this));
timePickerDialog.show();
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
myHour = hourOfDay;
myMinute = minute;
textView.setText("Year: " + myYear + "\n" +
"Month: " + myMonth + "\n" +
"Day: " + myday + "\n" +
"Hour: " + myHour + "\n" +
"Minute: " + myMinute);
}
}4단계 — AndroidManifest.xml 설정
아래는 androidManifest.xml의 기본 코드입니다. 별도의 권한 선언 없이 그대로 사용할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
앱 실행하기
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. 안드로이드 스튜디오에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하세요. 옵션 목록에서 자신의 모바일 기기를 선택하면, 기기 화면에 아래와 같은 순서로 날짜 선택 → 시간 선택 → 결과 출력 화면이 표시됩니다.


