CalendarView-master
所属分类:Java编程
开发工具:Java
文件大小:1202KB
下载次数:0
上传日期:2018-06-12 09:54:45
上 传 者:
牛牛网
说明: 一个可以左右快速滑动的月视图控件,可以快速的移植和使用。
(A month view control that can quickly slide around can be quickly transplanted and used.)
文件列表:
.idea (0, 2017-12-13)
.idea\gradle.xml (684, 2017-12-13)
.idea\inspectionProfiles (0, 2017-12-13)
.idea\inspectionProfiles\Project_Default.xml (271, 2017-12-13)
.idea\misc.xml (2147, 2017-12-13)
.idea\modules.xml (508, 2017-12-13)
.idea\runConfigurations.xml (564, 2017-12-13)
.idea\vcs.xml (180, 2017-12-13)
LICENSE (11357, 2017-12-13)
app (0, 2017-12-13)
app\build.gradle (1117, 2017-12-13)
app\proguard-rules.pro (916, 2017-12-13)
app\src (0, 2017-12-13)
app\src\androidTest (0, 2017-12-13)
app\src\androidTest\java (0, 2017-12-13)
app\src\androidTest\java\com (0, 2017-12-13)
app\src\androidTest\java\com\haibin (0, 2017-12-13)
app\src\androidTest\java\com\haibin\calendarviewproject (0, 2017-12-13)
app\src\androidTest\java\com\haibin\calendarviewproject\ExampleInstrumentedTest.java (764, 2017-12-13)
app\src\main (0, 2017-12-13)
app\src\main\AndroidManifest.xml (1028, 2017-12-13)
app\src\main\assets (0, 2017-12-13)
app\src\main\assets\colorful.jpeg (187938, 2017-12-13)
app\src\main\assets\index.jpeg (162331, 2017-12-13)
app\src\main\assets\meizu.jpeg (168453, 2017-12-13)
app\src\main\assets\month.jpeg (223670, 2017-12-13)
app\src\main\assets\shrink.jpeg (161227, 2017-12-13)
app\src\main\assets\simple.jpeg (178690, 2017-12-13)
app\src\main\java (0, 2017-12-13)
app\src\main\java\com (0, 2017-12-13)
app\src\main\java\com\haibin (0, 2017-12-13)
app\src\main\java\com\haibin\calendarviewproject (0, 2017-12-13)
app\src\main\java\com\haibin\calendarviewproject\Article.java (1311, 2017-12-13)
app\src\main\java\com\haibin\calendarviewproject\ArticleAdapter.java (10765, 2017-12-13)
app\src\main\java\com\haibin\calendarviewproject\EnglishWeekBar.java (431, 2017-12-13)
app\src\main\java\com\haibin\calendarviewproject\MainActivity.java (5518, 2017-12-13)
... ...
# CalenderView
Android上一个优雅、高度自定义、性能高效的日历控件,完美支持周视图,支持标记、自定义颜色、农历等。Canvas绘制,速度快、占用内存低,3.0.0版本全新重构,支持简单重新即可实现任意自定义布局、自定义UI,支持收缩展开、性能非常高效,
这个控件内存和效率优势相当明显,而且真正做到收缩+展开,适配多种场景,支持同时多种颜色标记日历事务,更多参考用法请移步Demo,Demo实现了4个精美的自定义效果。
### Gradle
```
compile 'com.haibin:calendarview:3.0.9'
```
```
com.haibin
calendarview
3.0.9
pom
```
### 如果你需要完全定制UI,参考demo,简单几步即可绘制你需要的效果,一般只需要实现三个回调函数绘制你需要的特效即可,自定义日历UI需要同时自定义周视图,真正做到热插拔效果,方便大众定制UI需求
### 效果预览
### 收缩展开的魅族风格效果
### 下标和多彩风格
### 快速年份月份切换
### 使用方法
```xml
```
### attrs
```xml
```
### CalendarView api
```java
public int getCurDay(); //今天
public int getCurMonth(); //当前的月份
public int getCurYear(); //今年
public void showSelectLayout(final int year); //快速弹出年份选择月份
public void closeSelectLayout(final int position); //关闭选择年份并跳转日期
@Deprecated
public void setOnDateChangeListener(OnDateChangeListener listener);//添加事件
public void setOnYearChangeListener(OnYearChangeListener listener);//年份切换事件
public void setOnDateSelectedListener(OnDateSelectedListener listener);//日期选择事件
public void setSchemeDate(List
mSchemeDate);//标记日期
public void update();//动态更新
public Calendar getSelectedCalendar(); //获取选择的日期
public void scrollToPre();//滚动到上一个月
public void scrollToNext();//滚动到下一个月
public void scrollToCalendar(int year, int month, int day);//滚动到指定日期
/**
* 设置背景色
*
* @param monthLayoutBackground 月份卡片的背景色
* @param weekBackground 星期栏背景色
* @param lineBg 线的颜色
*/
public void setBackground(int monthLayoutBackground, int weekBackground, int lineBg)
/**
* 设置文本颜色
*
* @param curMonthTextColor 当前月份字体颜色
* @param otherMonthColor 其它月份字体颜色
* @param lunarTextColor 农历字体颜色
*/
public void setTextColor(int curMonthTextColor,int otherMonthColor,int lunarTextColor)
/**
* 设置选择的效果
*
* @param style 选中的style CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE
* @param selectedThemeColor 选中的标记颜色
* @param selectedTextColor 选中的字体颜色
*/
public void setSelectedColor(int style, int selectedThemeColor, int selectedTextColor)
/**
* 设置标记的色
*
* @param style 标记的style CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE
* @param schemeColor 标记背景色
* @param schemeTextColor 标记字体颜色
*/
public void setSchemeColor(int style, int schemeColor, int schemeTextColor)
/**
* 设置星期栏的背景和字体颜色
*
* @param weekBackground 背景色
* @param weekTextColor 字体颜色
*/
public void setWeeColor(int weekBackground, int weekTextColor)
```
### CalendarLayout api
```java
public void expand(); //展开
public void shrink(); //收缩
```
### 混淆proguard-rules
```java
-keepclasseswithmembers class * {
public (android.content.Context);
}
```
### 如果你需要完全定制UI,参考demo,简单几步即可绘制你需要的效果,月视图和周视图需要同时更换,达到UI一致
#### 首先绘制月视图
```java
public class SimpleCalendarCardView extends BaseCalendarCardView {
private int mRadius;
public SimpleCalendarCardView(Context context) {
super(context);
}
@Override
protected void onPreviewHook() {
mRadius = Math.min(mItemWidth, mItemHeight) / 5 * 2;
mSchemePaint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onLoopStart(int x, int y) {
}
@Override
protected void onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme) {
int cx = x + mItemWidth / 2;
int cy = y + mItemHeight / 2;
canvas.drawCircle(cx, cy, mRadius, mSelectedPaint);
}
@Override
protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) {
int cx = x + mItemWidth / 2;
int cy = y + mItemHeight / 2;
canvas.drawCircle(cx, cy, mRadius, mSchemePaint);
}
@Override
protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) {
float baselineY = mTextBaseLine + y;
int cx = x + mItemWidth / 2;
if (hasScheme) {
canvas.drawText(String.valueOf(calendar.getDay()),
cx,
baselineY,
calendar.isCurrentDay() ? mCurDayTextPaint :
calendar.isCurrentMonth() ? mSchemeTextPaint : mOtherMonthTextPaint);
} else {
canvas.drawText(String.valueOf(calendar.getDay()), cx, baselineY,
calendar.isCurrentDay() ? mCurDayTextPaint :
calendar.isCurrentMonth() ? mCurMonthTextPaint : mOtherMonthTextPaint);
}
}
}
```
#### 其次绘制周视图,周视图回调几乎一样,唯一的区别是不需要y,只有一行,所以可以直接拷贝代码,把y=0即可
public class SimpleWeekView extends WeekView{
private int mRadius;
public SimpleWeekView(Context context) {
super(context);
}
@Override
protected void onPreviewHook() {
mRadius = Math.min(mItemWidth, mItemHeight) / 5 * 2;
mSchemePaint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDrawSelected(Canvas canvas, Calendar calendar, int x, boolean hasScheme) {
int cx = x + mItemWidth / 2;
int cy = mItemHeight / 2;
canvas.drawCircle(cx, cy, mRadius, mSelectedPaint);
}
@Override
protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) {
int cx = x + mItemWidth / 2;
int cy = mItemHeight / 2;
canvas.drawCircle(cx, cy, mRadius, mSchemePaint);
}
@Override
protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) {
float baselineY = mTextBaseLine ;
int cx = x + mItemWidth / 2;
if (hasScheme) {
canvas.drawText(String.valueOf(calendar.getDay()),
cx,
baselineY,
calendar.isCurrentDay() ? mCurDayTextPaint :
calendar.isCurrentMonth() ? mSchemeTextPaint : mSchemeTextPaint);
} else {
canvas.drawText(String.valueOf(calendar.getDay()), cx, baselineY,
calendar.isCurrentDay() ? mCurDayTextPaint :
calendar.isCurrentMonth() ? mCurMonthTextPaint : mCurMonthTextPaint);
}
}
}
## Licenses
- Copyright (C) 2013 huanghaibin_dev
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
limitations under the License.
近期下载者:
相关文件:
收藏者: