android 高仿小米日历,仿小米android周日历视图

这篇博客展示了如何使用 Android Week View 库实现一个包含头部和日期视图的日历组件,允许添加事件,支持滚动和定制样式。作者分享了关键代码片段,并指导如何实现月监听、事件点击和长按功能,以及如何根据需求调整外观。
摘要由CSDN通过智能技术生成

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 c79ff8a595dfb6315dd5fa32dda4960d.gifcabfd7c7ff4602835d57e928ca063649.gifscreen_shot3.gifscreen_shot4.gif Features

week header view

week day view

add events

Horizontal and vertical scrolling.

Usage

Import the library into your project.

Add WeekHeaderView and WeekDayView in your xml layout.

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">

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"/>

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" />

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" />

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());

}

});

Implement WeekDayView.MonthChangeListener, WeekDayView.EventClickListener, WeekDayView.EventLongPressListener according to your need.

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 onMonthChange(int newYear, int newMonth) {

// Populate the week view with some events.

List 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

If you have any question,you can send email to guojunustb@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值