Giter Site home page Giter Site logo

huanghaibin-dev / calendarview Goto Github PK

View Code? Open in Web Editor NEW
8.9K 8.9K 1.8K 123.43 MB

Android上一个优雅、万能自定义UI、仿iOS、支持垂直、水平方向切换、支持周视图、自定义周起始、性能高效的日历控件,支持热插拔实现的UI定制!支持标记、自定义颜色、农历、自定义月视图各种显示模式等。Canvas绘制,速度快、占用内存低,你真的想不到日历居然还可以如此优雅!An elegant, highly customized and high-performance Calendar Widget on Android.

License: Apache License 2.0

Java 100.00%
android calendar calendar-api calendar-component calendar-view calendar-widget calendarview

calendarview's People

Contributors

codingbooo avatar huanghaibin-dev avatar peterforme avatar qq157755587 avatar shuwnyuantee avatar stanllley avatar wenhui-prudencemed avatar yccheok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

calendarview's Issues

建议加个展开与收缩的回调

目前看到最好的周月切换日历,建议加个展开与收缩的回调,当展开与收缩完成时,或者展开与收缩的过程中,外部可以根据回调做对应的UI改变(动画之类的),而且这样可以同时判断SwipeRefreshLayout是否可以下拉刷新😊

bug:除了今天以外的日期也会显示红色(两个情况下,有附图)

现在发现主要有以下两个情况会发生这个bug:
情况一:
比如今天是3-25,则我第一次点击的其他日期(比如3-22),这时候再点其他日期(比如3-15),则22会变红色;如下图:
1

情况二:
比如今天是3-25,但点击其他日子的时候有一定概率该日子颜色会变红,如下图:
2

另外,再提个建议哈:如果能设置该日子被选中时的颜色就更棒了!因为比如选中时蓝底黑字就不美观了

有个新bug:IndexOutOfBoundsException

在4.4系统上点击几次就会出现这个bug:IndexOutOfBoundsException ,在安卓7.0系统上多次快速点击也会出现。
error log:
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{422a0048 position=2 id=-1, oldPos=-1, pLpos:-1 scrap [attachedScrap] tmpDetached no parent}
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5297)

请教一个问题

你好楼主,非常感谢你分享的这个日历控件,发现一个问题,比如默认设置的日期为红色,农历默认为黑色,如果设置选中状态日期为白色,农历也为白色,那么初始化时,显示的当天字体颜色还是红色,而农历选中状态变成白色,这样就不美观了。可以添加这个功能吗,就是第一次进去时,当天日期颜色是选中状态的白色,不是选中状态时,变为红色了。

还有,农历部分,农历和节假日的颜色可以分开来设置吗?统一设置,不太美观。

最后,非常感谢你的分享,祝工作顺利,生活愉快。

请教一个问题

你好 很感谢你分享的这个日历 请问年视图的月份字体颜色和日期字体颜色怎么修改

如图

screenshot_2017-05-05-10-50-27-991_com haibin cal
为什么五月份这么多假,是Bug吗?

选中日期状态混乱

月视图选中的日期,切换到周视图就变了

每个月都有一个初始化的1号默认选中吗?
整个日历的选中日期应该就是一个吧?

有个bug

当点击日历左上方的几月几日调到月份的界面 然后滚动到其他年份 随便选个月份 然后点击日历右上角的当天的那个日期 这时候日历是滚到到当前日期了 但是此时左上角的几月几日就不显示 显示的是当前的年份

API不够完善

例如:
1.CalendarView的min_year,min_year_month属性,只能在xml设置,没有对应的方法在代码层面设置。
2.显示指定月份,禁止滑动切换到上/下一月。

支持点击事件么?

Demo中下一月上一月 使用滑动来实现的, 我想加个点击 左箭头 上一月 右箭头 下一月
来实现这个功能,请问我该怎么调用呢?

混淆打包后,日历不显示了

我在混淆打包后,添加和不添加下面的配置,日历页面都不显示
#日历控件
-dontwarn com.haibin.calendarview.**
-keep class com.haibin.calendarview.** {*;}

希望尽快处理下这个问题哈

怎么同时多种颜色标记日历,我这样写没效果?

        List<Calendar> schemes = new ArrayList<>();
        int year = mCalendarView.getCurYear();
        int month = mCalendarView.getCurMonth();

        schemes.add(getSchemeCalendar(year, month, 3, 0xFF40db25));
        schemes.add(getSchemeCalendar(year, month, 6, 0xFFe69138));
        schemes.add(getSchemeCalendar(year, month, 9, 0xFFdf1356));
        schemes.add(getSchemeCalendar(year, month, 13, 0xFFedc56d));
        schemes.add(getSchemeCalendar(year, month, 15, 0xFFaacc44));
        schemes.add(getSchemeCalendar(year, month, 18, 0xFFbc13f0));
        schemes.add(getSchemeCalendar(year, month, 25, 0xFF13acf0));
        mCalendarView.setSchemeDate(schemes);

建议:可否新增点击效果方便用于日期选择

找了很多calendarView,唯独对你这个很满意,做的很漂亮!先给个赞
提个建议:新增点击日期的效果(就是在点中的日期加个圆形的背景),这样用户在选择日期的时候就很直观是点了哪个日期

反馈遇到的问题和建议

CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE
定义的是包访问级别,在项目中无法使用,只能写1和2。
功能比较少,翻页没有事件监听
未提供动态以月为单位切换视图,仅提供根据年份切换。
只能自己继承反射实现,希望作者下一版本能加上。

public class VCalendarView extends CalendarView {
private WrapViewPager mViewPager;
private static int mMinYear, mMaxYear;
private Calendar selectCalendar;

public VCalendarView(@NonNull Context context) {
    super(context);
}

public VCalendarView(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    TypedArray array = context.obtainStyledAttributes(attrs, com.haibin.calendarview.R.styleable.CalendarView);
    mMinYear = array.getInt(com.haibin.calendarview.R.styleable.CalendarView_min_year, 2010);
    mMaxYear = array.getInt(com.haibin.calendarview.R.styleable.CalendarView_max_year, 2050);
    if (mMinYear <= 1900) mMaxYear = 1900;
    if (mMaxYear >= 2099) mMaxYear = 2099;
    try {
        Field field = getClass().getSuperclass().getDeclaredField("mViewPager");
        field.setAccessible(true);
        mViewPager = (WrapViewPager) field.get(this);

    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    selectCalendar = super.getSelectedCalendar();
}

/**
 * 滚动到某月
 *
 * @param year
 * @param month
 */
public void scrollToMonth(int year, int month) {
    mViewPager.setCurrentItem(12 * (year - mMinYear) + month - 1);
}

}

如何同时使用下表和多彩风格

如题 我现在一方面要对选中的日期加上选中的圆形标记,另一方面还要同步系统日历日程即在日历日期的下面加上标记,请问这要如何同时实现呢

能不能实现这样的功能?

单选, 只能选今天即今天以后的日期.
双选, 用于查询历史记录, 只能选今天即今天之前的起止两个日期.

选择日期bug

选择日期的时候会出现两个日期份同时被选择的情况

从竖屏切换到横屏时 日历圆球背景出现剃头和剪尾的情况

从竖屏切换到横屏时 日历圆球背景出现剃头和剪尾的情况
我有一个activity,配置(android:configChanges="keyboardHidden|orientation|screenSize")当横竖屏切换时,不销毁重建activity,在这个activity中我使用一个fragment,这个fragment内使用了你的日历控件,竖屏的时候一切都很好,但横屏就会发生剃头和剪尾的情况。

疑问:在使用过程中有这样一个现象,感觉像是bug。

在使用过程中,如果我在3月份点击了某一天,这一天底色会改变,然后我翻到4月份,点击某一天,这一天底色也会变。但是再次返回3月份,发现3月份的那一天仍然处于被选中状态(底色改变中)。然而我在3月份点击后,翻到5月份点击就不会出现两个月中的某一天都处于被选中状态

选择月份

界面非常漂亮,空间很好用,但是遇到点问题,点了选择月份之后,选择跟刚才相同的月份后,没有回调通知呢,不知道怎么监听一下

关于默认选中的建议

现在是每次滑动的时候都会进行一次默认选中,我们很多时候都会在选中日期的时候进行请求,获取当前日期的数据。如果是本地数据还好,很多时候是网络请求,这样在频繁滑动的时候会请求非常多次数据,而且我们根本无法区分到底是用户点击产生的选中事件还是滑动产生的选中事件。
所以还是请大神考虑一下,是否可以提供一个方法,让开发者知道选中事件到底是怎么产生的,用于区分滑动和点击事件。
谢谢。

周视图滑动时日历显示的数据不对

我们现在项目要用到类似的日历控件,要支持月视图和周视图,现在发现切换为周视图,日历的数据不对,可否知道什么时候可以修复

不支持调整大小么?

默认设置warp_content 太大了 但是我这是固定的dp后 底部就看不到了, 另外一种方法 我设置了 warp-content后 我试着设置margin边距让他变小,但是没反应 , 请问这个怎么设置大小呢 ? 设置了大小底部就显示不全了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.