안드로이드 캘린더 오픈소스 - andeuloideu kaellindeo opeunsoseu

//github.com/wisnukurniawan/date-time-range-picker-android

wisnukurniawan/date-time-range-picker-android

Standalone Android widget for picking a single date, multiple date, and range of date from a calendar view. - wisnukurniawan/date-time-range-picker-android

github.com

SkyScanner 등에서 사용하는 UI를 갖춘 달력 오픈소스이다.

0) 한장 소개

1) 기본적인 사용방법

in build.gradle (Project: xxx)

allprojects { repositories { ... maven { url '//jitpack.io' } } }

in build.gradle (Module:app) 

dependencies { implementation "com.github.wisnukurniawan:date-time-range-picker-android:${version}" }

lastest version : 1.0.6

in XML

<com.wisnu.datetimerangepickerandroid.CalendarPickerView android:id="@+id/calendar_view" android:layout_width="match_parent" android:layout_height="match_parent" />

in java

Calendar nextYear = Calendar.getInstance(); nextYear.add(Calendar.YEAR, 1); CalendarPickerView calendar = (CalendarPickerView) findViewById(R.id.calendar_view); Date today = new Date(); calendar.init(today, nextYear.getTime()) .withSelectedDate(today);

proguard

No configuration needed.

Skip to content

GitLab

  • Menu

Projects Groups Snippets

  • /

  • Help

    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab

  • Sign in / Register

파일명이나 디렉토리 명에는 한글을 사용하지 마시기 바랍니다.
Do not use non-western character for file name and directory

  • open-source-2018-spring
  • Awsome_Android_Global_Calendar
  • Repository

Switch branch/tag

Find file

Download source code

zip tar.gz tar.bz2 tar

Clone

  • Clone with SSH
  • Clone with HTTPS
  • Open in your IDE

    Visual Studio Code (SSH)

    Visual Studio Code (HTTPS)

    IntelliJ IDEA (SSH)

    IntelliJ IDEA (HTTPS)

  • Copy SSH clone URL:open-source-2018-spring/Awsome_Android_Global_Calender.git
  • Copy HTTPS clone URL//git.ajou.ac.kr/open-source-2018-spring/Awsome_Android_Global_Calender.git

feedback to or

안녕하세요.

GridView로 간단한 달력을 만들어 보겠습니다.

1. 먼저 레이아웃부터 만들겠습니다.

- 현재 연/월을 보여줄 텍스트뷰와 Calendar를 작성할 그리드뷰를 사용합니다.

res->layout

activity_calendar.xml      (@color/color_ffffff를 사용하시려면 color.xml에 작업해주세요.)

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     android:background="@color/color_ffffff" >     <TextView         android:id="@+id/tv_date"         android:layout_width="match_parent"         android:layout_height="50dp"         android:background="@color/color_21a4ff"         android:gravity="center_vertical"         android:paddingLeft="10dp"         android:textColor="@color/color_ffffff"         android:textSize="20sp" />          <GridView         android:layout_marginTop="10dp"         android:id="@+id/gridview"         android:layout_weight="1"         android:layout_height="0dp"          android:layout_width="match_parent"         android:numColumns="7"         android:listSelector="@color/transparent"         >     </GridView> </LinearLayout>

item_calendar_gridview.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="//schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <TextView android:gravity="center_horizontal" android:id="@+id/tv_item_gridview" android:layout_width="wrap_content" android:layout_height="80dp" android:textSize="20sp" /> </LinearLayout>

2. 다음은 자바코드를 작성하겠습니다.

CalendarActivity.java

package com.example.calendar; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.TextView; public class CalendarActivity extends Activity { /** * 연/월 텍스트뷰 */ private TextView tvDate; /** * 그리드뷰 어댑터 */ private GridAdapter gridAdapter; /** * 일 저장 할 리스트 */ private ArrayList<String> dayList; /** * 그리드뷰 */ private GridView gridView; /** * 캘린더 변수 */ private Calendar mCal; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calendar); tvDate = (TextView)findViewById(R.id.tv_date); gridView = (GridView)findViewById(R.id.gridview); // 오늘에 날짜를 세팅 해준다. long now = System.currentTimeMillis(); final Date date = new Date(now); //연,월,일을 따로 저장 final SimpleDateFormat curYearFormat = new SimpleDateFormat("yyyy", Locale.KOREA); final SimpleDateFormat curMonthFormat = new SimpleDateFormat("MM", Locale.KOREA); final SimpleDateFormat curDayFormat = new SimpleDateFormat("dd", Locale.KOREA); //현재 날짜 텍스트뷰에 뿌려줌 tvDate.setText(curYearFormat.format(date) + "/" + curMonthFormat.format(date)); //gridview 요일 표시 dayList = new ArrayList<String>(); dayList.add("일"); dayList.add("월"); dayList.add("화"); dayList.add("수"); dayList.add("목"); dayList.add("금"); dayList.add("토"); mCal = Calendar.getInstance(); //이번달 1일 무슨요일인지 판단 mCal.set(Year,Month,Day) mCal.set(Integer.parseInt(curYearFormat.format(date)), Integer.parseInt(curMonthFormat.format(date)) - 1, 1); int dayNum = mCal.get(Calendar.DAY_OF_WEEK); //1일 - 요일 매칭 시키기 위해 공백 add for (int i = 1; i < dayNum; i++) { dayList.add(""); } setCalendarDate(mCal.get(Calendar.MONTH) + 1); gridAdapter = new GridAdapter(getApplicationContext(), dayList); gridView.setAdapter(gridAdapter); } /** * 해당 월에 표시할 일 수 구함 * * @param month */ private void setCalendarDate(int month) { mCal.set(Calendar.MONTH, month - 1); for (int i = 0; i < mCal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { dayList.add("" + (i + 1)); } } /** * 그리드뷰 어댑터 * */ private class GridAdapter extends BaseAdapter { private final List<String> list; private final LayoutInflater inflater; /** * 생성자 * * @param context * @param list */ public GridAdapter(Context context, List<String> list) { this.list = list; this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return list.size(); } @Override public String getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.item_calendar_gridview, parent, false); holder = new ViewHolder(); holder.tvItemGridView = (TextView)convertView.findViewById(R.id.tv_item_gridview); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.tvItemGridView.setText("" + getItem(position)); //해당 날짜 텍스트 컬러,배경 변경 mCal = Calendar.getInstance(); //오늘 day 가져옴 Integer today = mCal.get(Calendar.DAY_OF_MONTH); String sToday = String.valueOf(today); if (sToday.equals(getItem(position))) { //오늘 day 텍스트 컬러 변경 holder.tvItemGridView.setTextColor(getResources().getColor(R.color.color_000000)); } return convertView; } } private class ViewHolder { TextView tvItemGridView; } }

결과 화면입니다.

Toplist

최신 우편물

태그