Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) 에서 제공하는 시간위젯 TimePicker 사용법

안드로이드 개발
반응형

안드로이드(Android) 에서 제공하는 시간위젯 TimePicker 사용법

 

개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2

 

이전에 사용했던 샘플예제들인데 젤라빈(4.2.2) 으로 업그레이드 되면서

수정해야 되는 것들이 있어서 아티클을 작성 하게 되었다.

 

이전소스에서는 showDialog(ID_DATEPICKER) 를 호출한후

onCreateDialog 에서 값을 받아 id 에 해당하는 객체를 생성한후

팝업 Dialog 를 만들었다. 하지만 이제는 이 함수는 deprecated 되었다.

 

소스를 보면 알겠지만 이제 onCreateDialog() 을 사용하지 않고 바로

DatePickerDialog() , TimePikcerDialog() 객체를 만들어 show() 함수를

호출하면 바로 팝업을 띄울수 있다.

위의 deprecated 된것을 아래와 같이 만들고 onCreateDialog() 함수는

삭제한다.

 

public void onClick(View v) {
	
	final Calendar c = Calendar.getInstance();
	
	switch (v.getId()) {
	case R.id.datepickerbutton:
		myYear = c.get(Calendar.YEAR);
		myMonth = c.get(Calendar.MONTH);
		myDay = c.get(Calendar.DAY_OF_MONTH);
		
		Toast.makeText(
				MainActivity.this, "- onCreateDialog(ID_DATEPICKER) -", 
				Toast.LENGTH_LONG)
				.show();
		Dialog dlgDate = new DatePickerDialog(this, myDateSetListener, myYear,
				myMonth, myDay);
		dlgDate.show();
		break;
		
	case R.id.timepickerbutton:
		myHour = c.get(Calendar.HOUR_OF_DAY);
		myMinute = c.get(Calendar.MINUTE);
		Toast.makeText(MainActivity.this,
				"- onCreateDialog(ID_TIMEPICKER) -", 
				Toast.LENGTH_LONG)
				.show();
		Dialog dlgTime = new TimePickerDialog(this, myTimeSetListener, myHour,
				myMinute, false);
		dlgTime.show();
		break;
		
	default:
		break;
	}
}

이전에 사용했던 showDialog() 함수는 삭제하고 새로 만들었는데

전제 소스에 대한 설명을 하자면 간단하다. 날짜를 셋팅하는 위젯과

시간을 셋팅하는 위젯을 다이얼로그 형태로 띄우고 값을 선택한후에

Done 을 누르게 되면 화면종료 이벤트에 선택한 값에 대한 내용을

Toast 로 표현을 해준것이다.

 

다이얼로그생성하는 코드는 위에서 설명했고 각 위젯을 클릭하고 값을

셋팅한후에 Done 누르게 되면 그에 대한 셋팅값을 Toast 로 표현해주는

부분이다.

private DatePickerDialog.OnDateSetListener myDateSetListener 
			= new DatePickerDialog.OnDateSetListener() {

	public void onDateSet(DatePicker view, int year, int monthOfYear,
			int dayOfMonth) {
		String date = "Year: " + String.valueOf(year) + "\n" + "Month: "
				+ String.valueOf(monthOfYear + 1) + "\n" + "Day: "
				+ String.valueOf(dayOfMonth);
		Toast.makeText(MainActivity.this, date, Toast.LENGTH_LONG).show();
	}
};

private TimePickerDialog.OnTimeSetListener myTimeSetListener 
			= new TimePickerDialog.OnTimeSetListener() {

	public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
		String time = "Hour: " + String.valueOf(hourOfDay) + "\n"
				+ "Minute: " + String.valueOf(minute);
		Toast.makeText(MainActivity.this, time, Toast.LENGTH_LONG).show();
	}
};

전체 소스와 실행한 화면, 레이아웃은 다음과 같다.

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

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Date Test" />

    <Button
        android:id="@+id/datepickerbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="DatePicker" />

    <Button
        android:id="@+id/timepickerbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TimePicker" />

</LinearLayout>

 

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

	private int myYear, myMonth, myDay, myHour, myMinute;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Button datePickerButton = (Button) findViewById(R.id.datepickerbutton);
		Button timePickerButton = (Button) findViewById(R.id.timepickerbutton);
		datePickerButton.setOnClickListener(this);
		timePickerButton.setOnClickListener(this);
	}

	public void onClick(View v) {

		final Calendar c = Calendar.getInstance();

		switch (v.getId()) {
		case R.id.datepickerbutton:
			myYear = c.get(Calendar.YEAR);
			myMonth = c.get(Calendar.MONTH);
			myDay = c.get(Calendar.DAY_OF_MONTH);

			Toast.makeText(MainActivity.this,
					"- onCreateDialog(ID_DATEPICKER) -", Toast.LENGTH_LONG)
					.show();
			Dialog dlgDate = new DatePickerDialog(this, myDateSetListener,
					myYear, myMonth, myDay);
			dlgDate.show();
			break;

		case R.id.timepickerbutton:
			myHour = c.get(Calendar.HOUR_OF_DAY);
			myMinute = c.get(Calendar.MINUTE);
			Toast.makeText(MainActivity.this,
					"- onCreateDialog(ID_TIMEPICKER) -", Toast.LENGTH_LONG)
					.show();
			Dialog dlgTime = new TimePickerDialog(this, myTimeSetListener,
					myHour, myMinute, false);
			dlgTime.show();
			break;

		default:
			break;
		}
	}

	private DatePickerDialog.OnDateSetListener myDateSetListener 
				= new DatePickerDialog.OnDateSetListener() {

		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			String date = "Year: " + String.valueOf(year) + "\n" + "Month: "
					+ String.valueOf(monthOfYear + 1) + "\n" + "Day: "
					+ String.valueOf(dayOfMonth);
			Toast.makeText(MainActivity.this, date, Toast.LENGTH_LONG).show();
		}
	};

	private TimePickerDialog.OnTimeSetListener myTimeSetListener 
				= new TimePickerDialog.OnTimeSetListener() {

		public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
			String time = "Hour: " + String.valueOf(hourOfDay) + "\n"
					+ "Minute: " + String.valueOf(minute);
			Toast.makeText(MainActivity.this, time, Toast.LENGTH_LONG).show();
		}
	};

}
반응형
Posted by 녹두장군1
,