高仿釘釘和小米的日歷控件

i# 簡介
這是一個高仿釘釘和小米的日歷控件,支持快速滑動,界面緩存。想要定制化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);
            }
        });

github源碼 歡迎大家star~喲
apk下載

關于我的其他開源項目

android自定義日期選擇控件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,810評論 25 708
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,487評論 2 45
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,497評論 0 17
  • 最佳藥引:這個問題,內涵玄機 街旁,女朋友神色凝重的說到:“你越來越不重視我了,是因為越來越熟,...
    紫竹閱讀 559評論 5 5
  • 現在的人即使給孩子起個小名也透出十二分的莊重,翻四書五經的,查康熙字典的,用起名軟件的,不一而足。原先起個小名可沒...
    呂拾春秋閱讀 1,110評論 6 8