안드로이드(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(); } }; }
'안드로이드 개발' 카테고리의 다른 글
안드로이드(android) GoogleMap 지도위에 도형이미지 그리기 (3) | 2014.03.15 |
---|---|
안드로이드(android) GoogleMap 구현시 각종 표시 유형에 대해 알아본다 (0) | 2014.03.13 |
안드로이드(Android) 맵구현시 해당하는 이벤트 구현 예제 (1) | 2014.03.08 |
안드로이드(android) 프로그레시브바를 이용한 파일 다운로드 구현 (0) | 2014.03.04 |
안드로이드(Android) 컴퓨터와 연결하여 화면 캡쳐하기 (0) | 2014.02.22 |
안드로이드(Android) 에서 MapView 를 이용해 구글맵 구현하기 (5) | 2014.02.19 |
안드로이드(Android) Map 구현시 클릭이벤트로 화면좌표와 위도경도값 가져오기 (6) | 2014.02.18 |
안드로이드(Android) 이클립스와 스마트폰 갤럭시 S 의 연결 (1) | 2014.02.17 |