티스토리 뷰

어떤 강의를 해볼까 하다가 우선 처음은 간단하게! 라는 생각으로 달력을 만들어보고자 합니다.

강의가 몇차까지 가야 달력만들기가 끝날지 모르겠지만.. (최대한 빨리 끝내보겠습니다)


일단 가장 기본적인 달력을 만들어보고, 그 다음에 필요하다면 추가기능을 넣어보죠.

일정이라던가.. 약속을 넣어볼까요 혹은 가계부? 문자를 읽어와서 지출을 저장해볼까요 등등


우선 오늘은 첫째날이니 간단하게 조금만 합니다.

(이래서 언제 다하겠냐는...)


오늘은 Calendar API에 대해 살짝 맛만 보죠.


주석 간단히 달아놨습니다.

읽어보시면 딱히 어려운내용은 없을겁니다~




Calendar mCal = Calendar.getInstance();
// 연
System.out.println("1 : " + mCal.get(Calendar.YEAR));
// 월 - 월은 시작값이 0 이기때문에 +1해줘야 정상적인 달을 구할 수 있다.
System.out.println("2 : " + (mCal.get(Calendar.MONTH)+1));
// 일
System.out.println("3 : " + mCal.get(Calendar.DAY_OF_MONTH));
// 요일
System.out.println("4 : " + mCal.get(Calendar.DAY_OF_WEEK));
// 이 달의 마지막 날짜
System.out.println("5 : " + mCal.getActualMaximum(Calendar.DAY_OF_MONTH));




위 API를 이용하여 다음과 같은 화면을 만들었습니다.


package com.example.calendar;

import java.util.ArrayList;
import java.util.Calendar;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;

public class MainActivity extends Activity {

	GridView mGridView;
	DateAdapter adapter;
	ArrayList arrData;
	Calendar mCal;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		// Calendar 객체 생성
		mCal = Calendar.getInstance();
		
		// 달력 세팅
		setCalendarDate(mCal.get(Calendar.MONTH)+1);
	}
	
	public void setCalendarDate(int month){
		arrData = new ArrayList();
		// 요일은 +1해야 되기때문에 달력에 요일을 세팅할때에는 -1 해준다.
		mCal.set(Calendar.MONTH, month-1);
		
		for (int i = 0; i < mCal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
			arrData.add(i+1);
		}
				
		adapter = new DateAdapter(this, arrData);
		
		mGridView = (GridView)findViewById(R.id.calGrid);
		mGridView.setAdapter(adapter);
	}
}

// GridView와 연결해주기위한 어댑터 구성
class DateAdapter extends BaseAdapter {
	private Context context;
	private ArrayList arrData;
	private LayoutInflater inflater;
	
	public DateAdapter(Context c, ArrayList arr) {
		this.context = c;
		this.arrData = arr;
		inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}
	
	public int getCount() {
		return arrData.size();
	}
	
	public Object getItem(int position) {
		return arrData.get(position);
	}
	
	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		if (convertView == null) {
			convertView = inflater.inflate(R.layout.viewitem, parent, false);
		}
		
		TextView ViewText = (TextView)convertView.findViewById(R.id.ViewText);
		ViewText.setText(arrData.get(position)+"");
		
		
		return convertView;
		
	}

}




위 소스를 적용하면 다음과 같은 화면이 나옵니다.



간단하게 달력이 보입니다. ( 해당 사진은 14.2.24일 기준 달력입니다)

다음시간에는 

1. 위에 월~일까지의 요일 타이틀을 넣고

2. 사진에 보시는것과같이 1일. 즉 시작하는 요일의 위치가 이상합니다. 

그것을 수정해보죠.



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함