note

Chrono 시간 , 날짜 처리 본문

Android/기본

Chrono 시간 , 날짜 처리

투한 2012. 1. 10. 15:06
<?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:id="@+id/dateAndTime"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
      />
    <Button
        android:id="@+id/dateBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="날짜 선택" />
    <Button
        android:id="@+id/timeBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="시간 선택" />

</LinearLayout>


package kr.android.chrono;

//Chrono 시간,날짜 처리

import android.app.TimePickerDialog;
import android.widget.TimePicker;
import java.text.DateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class ChronoDemo extends Activity {
	DateFormat fmtDateAndTime = DateFormat.getDateTimeInstance();

	TextView dateAndTimeLabel;
	Calendar dateAndTime = Calendar.getInstance();
	
	//익명 내부 클래스 형태의 이벤트 처리(날짜 관련)
	DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
		//이벤트 핸들러
		//DatePicker view : DatePicker 객체
		//int year : 변경한 년도 전달
		//int monthOfYear : 변경한 월 전달
		//int dayOfMonth : 변경한 일 전달
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {

			dateAndTime.set(Calendar.YEAR, year);
			dateAndTime.set(Calendar.MONTH, monthOfYear);
			dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
			
			updateLabel();
			
		}
	};
	//익명 내부 클래스 형태의 이벤트 처리 (시간관련)
	TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener(){
	
		//이벤트 핸들러
		//TimePicker view : TimePicker 객체
		//int hourOfDay : 변경한 시간 전달
		//int minute : 변경한 분 전달
		public void onTimeSet(TimePicker view, int hourOfDay,int minute){
			dateAndTime.set(Calendar.HOUR_OF_DAY,hourOfDay);
			dateAndTime.set(Calendar.MINUTE,minute);
			updateLabel();
			
		}
	};

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		//날짜를 셋팅하기 위한 버튼
		Button btn = (Button) findViewById(R.id.dateBtn);
		
		//버튼 클릭시 이벤트 처리
		btn.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				//전달되는 인자
				//ChronoDemo.this : 사용중인 Activity 객체
				//d : DatePickerDialog 사용시 발생한 이벤트를 처리하는 객체
				//dateAndTime.get(Calendar.YEAR): 년도
				//dateAndTime.get(Calendar.MONTH) : 월
				//dateAndTime.get(Calendar.DAY_OF_MONTH) : 일
				new DatePickerDialog(ChronoDemo.this, d, dateAndTime
						.get(Calendar.YEAR), dateAndTime.get(Calendar.MONTH),
						dateAndTime.get(Calendar.DAY_OF_MONTH)).show();

			}
		});
		//시간을 셋팅하기 위한 버튼
		Button btn2 = (Button)findViewById(R.id.timeBtn);
		
		btn2.setOnClickListener(new View.OnClickListener() {
			
			//전달되는 인자
			//ChronoDemo.this : 사용중인 Activity 객체
			//t : TimePickerDialog 사용시 발생한 이벤트를 처리하는 객체
			//dateAndTime.get(Calendar.HOUR_OF_DAY): 시간
			//dateAndTime.get(Calendar.MINUTE) : 분
			public void onClick(View v) {
			new TimePickerDialog(ChronoDemo.this,t,
					dateAndTime.get(Calendar.HOUR_OF_DAY),
					dateAndTime.get(Calendar.MINUTE),
					true).show();		
			}
		});
		//날짜와 시간이 셋팅되는 TextView
		dateAndTimeLabel = (TextView) findViewById(R.id.dateAndTime);
		updateLabel();
	}
	//Calendar 객체의 날짜와 시간을 TextView에 매칭시키는 메소드
	private void updateLabel(){
		dateAndTimeLabel.setText(fmtDateAndTime.format(dateAndTime.getTime()));
	}
}


'Android > 기본' 카테고리의 다른 글

Intent Tab 권한설정, Manifest.xml(설정)  (0) 2012.01.10
Tab 탭  (0) 2012.01.10
Gallery ImageView  (0) 2012.01.10
AutoComplete 자동완성기능  (0) 2012.01.10
그리드 Grid  (0) 2012.01.09