专栏名称: 开发者全社区
分享和推送Java/Android方向的技术和文章,让你成为这方面的大牛,让你每天都成长一点。同时,我们也会邀请BAT的大牛分享原创!
目录
相关文章推荐
郭霖  ·  2024年终总结,花开终有时 ·  4 天前  
鸿洋  ·  Android AMS 自述 ·  4 天前  
郭霖  ·  原创:写给初学者的Jetpack ... ·  5 天前  
51好读  ›  专栏  ›  开发者全社区

高仿钉钉和小米的日历控件,很实用

开发者全社区  · 公众号  · android  · 2017-03-23 07:54

正文

相关阅读:

吊炸天!74款APP完整源码!

20 多个可以提高你Android开发技能的国外优秀开源 app

【干货】最新阿里Android面试题总结(附答案)


作者:codbking

原文地址:http://www.jianshu.com/p/622fdded4dc9

github地址:https://github.com/codbking/CalendarExaple


简介

这是一个高仿钉钉和小米的日历控件,支持快速滑动,界面缓存。想要定制化UI,使用起来非常简单,就像使用ListView一样

一些特点:

  1. 可以自定义日历控件UI

  2. 支持快速滑动

  3. 支持农历和阳历

  4. 界面UI缓存和日历数据缓存

  5. 扩展view支持listView的滑动

  6. 左右无限滑动

效果

  • 先上两张demo的效果图,分别是仿小米和钉钉日历效果图

仿小米日历

仿钉钉日历





  • 再看下交互效果


交互动画

how to use

  • Add it in your root build.gradle at the end of repositories:

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

  • Add the dependency

    dependencies {        

      • compile 'com.github.codbking:CalendarExaple:v1.0.0'}

  • 在layout的xml中添加CalendarLayout和CalendarDateView

    注意:CalendarDateView一定是CalendarLayout第一个view,扩展view必须是CalendarDateView第二个view

    com.codbking.calendar.CalendarLayout      android:layout_width="match_parent"      android:layout_height="0dp"      android:layout_weight="1"      >      com.codbking.calendar.CalendarDateView          android:id="@+id/calendarDateView"          android:layout_width="match_parent"          android:layout_height="wrap_content"/>      ListView          android:id="@+id/list"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:background="#ffffff"          />  com.codbking.calendar.CalendarLayout>

  • 在你的java文件中设置CalendarDateView的CaledarAdapter和CalendarView.OnItemClickListener监听

    注意:想要设置选中效果,只需设置CaledarAdapter中的view的选中背景

        mCalendarDateView.setAdapter(new CaledarAdapter() {          @Override          public View getView(View convertView, ViewGroup parentView, CalendarBean bean) {              //判断convertView为null,可以有效利用view的回收重用,左右滑动的效率高              if (convertView == null) {                  convertView = LayoutInflater.from(parentView.getContext()).inflate(R.layout.item_xiaomi, null);              }              TextView chinaText = (TextView) convertView.findViewById(R.id.chinaText);              TextView text = (TextView) convertView.findViewById(R.id.text);              text.setText("" + bean.day);              //mothFlag 0是当月,-1是月前,1是月后              if (bean.mothFlag != 0) {                  text.setTextColor(0xff9299a1);              } else {                  text.setTextColor(0xff444444);              }              chinaText.setText(bean.chinaDay);              return convertView;          }      });      mCalendarDateView.setOnItemClickListener(new CalendarView.OnItemClickListener() {          @Override          public void onItemClick(View view, int postion, CalendarBean bean) {              mTitle.setText(bean.year + "/" + bean.moth + "/" + bean.day);          }      });

githup源码 欢迎大家star~哟
apk下载

关于我的其他开源项目

android自定义日期选择控件

看完本文有收获?请分享给更多人

Java和Android大牛频道

欢迎关注我们,一起讨论技术,扫描和长按下方的二维码可快速关注我们。搜索微信公众号:JANiubility。

公众号:JANiubility