仿小米日历

sample-of-Android-week-view

简介:仿小米日历
This is a sample of android week view,Thanks the author of android week view ,The WeekHeaderView is based on android week view .This project contains two view ,the header view and day view.You can add events .Please watch the rederings       

Features

  • week header view
  • week day view
  • add events
  • Horizontal and vertical scrolling.

Usage

  1. Import the library into your project.
  2. Add WeekHeaderView and WeekDayView in your xml layout.

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".MainActivity">
    
     <TextView
         android:id="@+id/tv_date"
         android:layout_width="match_parent"
         android:layout_height="30dp"
         android:background="#455964"
         android:gravity="center"
         android:text="2015 年 1 月"
         android:textColor="#ffffff"
         android:textSize="16sp"/>
    
     <com.guojunustb.library.WeekHeaderView
         android:id="@+id/weekheaderview"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_below="@+id/tv_date"
         app:firstDayOfWeek2="sunday"
         app:headerBackgroundColor="#455964"
         app:headerDayLabelNormalTextColor="#ffffff"
         app:headerDayLabelTextSize="20sp"
         app:headerDayLabelTodayTextColor="@android:color/holo_red_dark"
         app:headerFocusBackgroundColor="#ffffff"
         app:headerFocusSameDayBackgroundColor="#ffffff"
         app:headerFocusSameDayTextColor="#000000"
         app:headerFocusTextColor="#000000"
         app:headerPaddingTop="20dp"
         app:headerRowGap="40dp"
         app:headerWeekLabelTextColor="#ffffff"
         app:headerWeekLabelTextSize="16sp" />
    
     <com.guojunustb.library.WeekDayView
         android:id="@+id/weekdayview"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_below="@+id/weekheaderview"
         android:visibility="visible"
         app:columnGap="8dp"
         app:dayBackgroundColor="#ffffffff"
         app:eventTextColor="@android:color/white"
         app:headerColumnBackground="#ffffffff"
         app:headerColumnPadding="8dp"
         app:headerColumnTextColor="@color/toolbar_text"
         app:headerRowBackgroundColor="#465a65"
         app:headerRowPadding="12dp"
         app:hourHeight="60dp"
         app:noOfVisibleDays="1"
         app:textSize="12sp"
         app:todayBackgroundColor="#1848adff"
         app:todayHeaderTextColor="@color/accent" />
    </RelativeLayout>
    
  3. Write the following code in your java file.

      mWeekView = (WeekDayView) findViewById(R.id.weekdayview);
         mWeekHeaderView= (WeekHeaderView) findViewById(R.id.weekheaderview);
         mTv_date =(TextView)findViewById(R.id.tv_date);
         mWeekView.setMonthChangeListener(this);
         mWeekView.setEventLongPressListener(this);
         mWeekView.setOnEventClickListener(this);
         mWeekView.setScrollListener(this);
         mWeekHeaderView.setDateSelectedChangeListener(new WeekHeaderView.DateSelectedChangeListener() {
             @Override
             public void onDateSelectedChange(Calendar oldSelectedDay, Calendar newSelectedDay) {
                 mWeekView.goToDate(newSelectedDay);
             }
         });
         mWeekHeaderView.setScrollListener(new WeekHeaderView.ScrollListener() {
             @Override
             public void onFirstVisibleDayChanged(Calendar newFirstVisibleDay, Calendar oldFirstVisibleDay) {
                 mWeekView.goToDate(mWeekHeaderView.getSelectedDay());
             }
         });
    
  4. Implement WeekDayView.MonthChangeListenerWeekDayView.EventClickListener,WeekDayView.EventLongPressListener according to your need.

  5. Provide the events for the WeekDayView in WeekDayView.MonthChangeListener.onMonthChange() callback. Please remember that the calendar pre-loads events of three consecutive months to enable lag-free scrolling.

     WeekView.MonthChangeListener mMonthChangeListener = new WeekView.MonthChangeListener() {
         @Override
         public List<WeekViewEvent> onMonthChange(int newYear, int newMonth) {
             // Populate the week view with some events.
             List<WeekViewEvent> events = getEvents(newYear, newMonth);
             return events;
         }
     };
    

    Customization


You can customize the look of the WeekHeaderView in xml. Use the following attributes in xml. All these attributes also have getters and setters to enable you to change the style dynamically.

  • firstDayOfWeek2
  • headerWeekLabelTextSize
  • headerDayLabelTextSize
  • headerWeekLabelTextColor
  • headerDayLabelNormalTextColor
  • headerDayLabelTodayTextColor
  • headerBackgroundColor
  • headerRowGap
  • headerPaddingLeft
  • headerPaddingRight
  • headerPaddingTop
  • headerPaddingBottom
  • headerFocusTextColor
  • headerFocusBackgroundColor
  • headerFocusSameDayBackgroundColor
  • headerFocusSameDayTextColor

You can customize the look of the WeekDayView in xml. Use the following attributes in xml. All these attributes also have getters and setters to enable you to change the style dynamically.

  • columnGap
  • dayBackgroundColor
  • dayNameLength
  • eventMarginVertical
  • eventPadding
  • eventTextColor
  • eventTextSize
  • firstDayOfWeek
  • headerColumnBackground
  • headerColumnPadding
  • headerColumnTextColor
  • headerRowBackgroundColor
  • headerRowPadding
  • hourHeight
  • hourSeparatorColor
  • hourSeparatorHeight
  • noOfVisibleDays
  • overlappingEventGap
  • textSize
  • todayBackgroundColor
  • todayHeaderTextColor

Interfaces

Use the following interfaces according to your need.

  • mWeekView.setMonthChangeListener() to provide events to the calendar
  • mWeekView.setOnEventClickListener() to get a callback when an event is clicked
  • mWeekView.setEventLongPressListener() to get a callback when an event is long pressed
  • mWeekView.setEmptyViewClickListener() to get a callback when any empty space is clicked
  • mWeekView.setEmptyViewLongPressListener() to get a callback when any empty space is long pressed
  • mWeekView.setDateTimeInterpreter() to set your own labels for the calendar header row and header column
  • mWeekView.setScrollListener() to get an event every time the first visible day has changed

Thank you alamkanak


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值