Android 日歷控件庫,可左右滑動,顯示公歷,農(nóng)歷,節(jié)假日等功能
封面圖:
demo效果圖
源碼目錄結(jié)構(gòu)
Features
- 日歷左右滑動.
- 顯示陽歷,農(nóng)歷,節(jié)假日和二十四節(jié)氣
- 實現(xiàn)對某月日期的單選或者多選.
使用步驟
Gradle Dependency
Add the library to your project build.gradle
compile 'com.joybar.calendar:librarycalendar:1.0.4'
Sample Usage
實現(xiàn)OnPageChangeListener和OnDateClickListener接口,如果實現(xiàn)多選,需要實現(xiàn) OnDateCancelListener
public class MainActivity extends AppCompatActivity implements CalendarViewPagerFragment.OnPageChangeListener, CalendarViewFragment.OnDateClickListener, CalendarViewFragment.OnDateCancelListener { private TextView tv_date; private boolean isChoiceModelSingle = false; private List<CalendarDate> mListDate = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_date = (TextView) findViewById(R.id.tv_date); initFragment(); } private void initFragment(){ FragmentManager fm = getSupportFragmentManager(); FragmentTransaction tx = fm.beginTransaction(); // Fragment fragment = new CalendarViewPagerFragment(); Fragment fragment = CalendarViewPagerFragment.newInstance(isChoiceModelSingle); tx.replace(R.id.fl_content, fragment); tx.commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_im, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_single: isChoiceModelSingle = true; initFragment(); break; case R.id.menu_multi: isChoiceModelSingle = false; initFragment(); break; default: break; } return true; } @Override public void OnDateClick(CalendarDate calendarDate) { int year = calendarDate.getSolar().solarYear; int month = calendarDate.getSolar().solarMonth; int day = calendarDate.getSolar().solarDay; if (isChoiceModelSingle) { tv_date.setText(year + "-" + month + "-" + day); } else { //System.out.println(calendarDate.getSolar().solarDay); mListDate.add(calendarDate); tv_date.setText(listToString(mListDate)); } } @Override public void OnDateCancel(CalendarDate calendarDate) { int count = mListDate.size(); for (int i = 0; i < count; i++) { CalendarDate date = mListDate.get(i); if (date.getSolar().solarDay == calendarDate.getSolar().solarDay) { mListDate.remove(i); break; } } tv_date.setText(listToString(mListDate)); } @Override public void OnPageChange(int year, int month) { tv_date.setText(year + "-" + month); mListDate.clear(); } private static String listToString(List<CalendarDate> list) { StringBuffer stringBuffer = new StringBuffer(); for (CalendarDate date : list) { stringBuffer.append(date.getSolar().solarYear + "-" + date.getSolar().solarMonth + "-" + date.getSolar().solarDay).append(" "); } return stringBuffer.toString(); } }
單選或者多選的實現(xiàn)代碼
if (isChoiceModelSingle) { mGridView.setChoiceMode(GridView.CHOICE_MODE_SINGLE); } else { mGridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE); } mGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { CalendarDate calendarDate = ((CalendarGridViewAdapter) mGridView.getAdapter()).getListData().get(position); if (isChoiceModelSingle) { //單選 if (finalMListDataCalendar.get(position).isInThisMonth()) { onDateClickListener.OnDateClick(calendarDate); } else { mGridView.setItemChecked(position, false); } } else { //多選 if (finalMListDataCalendar.get(position).isInThisMonth()) { // mGridView.getCheckedItemIds() if(!mGridView.isItemChecked(position)){ onDateCancelListener.OnDateCancel(calendarDate); } else { onDateClickListener.OnDateClick(calendarDate); } } else { mGridView.setItemChecked(position, false); } } } });
git地址:https://github.com/myjoybar/android-calendar-view
以上就是Android日歷控件的資料整理,后續(xù)繼續(xù)補充相關(guān)資料,謝謝大家對本站的支持!
相關(guān)文章
Android UI設(shè)計系列之自定義EditText實現(xiàn)帶清除功能的輸入框(3)
這篇文章主要介紹了Android UI設(shè)計系列之自定義EditText實現(xiàn)帶清除功能的輸入框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06Android DragVideo實現(xiàn)播放視頻時任意拖拽的方法
這篇文章主要介紹了Android DragVideo實現(xiàn)播放視頻時任意拖拽的方法的相關(guān)資料,一種在播放視頻時,能夠拖拽的方案,需要的朋友可以參考下2016-12-12Android編程中調(diào)用Camera時預覽畫面有旋轉(zhuǎn)問題的解決方法
這篇文章主要介紹了Android編程中調(diào)用Camera時預覽畫面有旋轉(zhuǎn)問題的解決方法,涉及Android針對Camera調(diào)用攝像頭源碼部分的相關(guān)修改技巧,需要的朋友可以參考下2015-11-11Android中獲取sha1證書指紋數(shù)據(jù)的方法
大家都知道在Android開發(fā)中,經(jīng)常要獲取sha1證書指紋,所以這篇文章主要介紹在Android中如何使用命令獲取sha1證書指紋數(shù)據(jù)的方法,有需要的可以參考借鑒。2016-09-09使用Jetpack Compose實現(xiàn)翻轉(zhuǎn)卡片效果流程詳解
Jetpack Compose 是一款基于 Kotlin 的聲明式 UI 工具包,可以方便地創(chuàng)建漂亮的用戶界面。使用 Compose 的動畫 API 和可繪制 API,可以輕松實現(xiàn)翻轉(zhuǎn)卡片效果。通過設(shè)置旋轉(zhuǎn)角度和透明度等屬性,可以使卡片沿著 Y 軸翻轉(zhuǎn),并實現(xiàn)翻頁效果2023-05-05Android自定義帶增長動畫和點擊彈窗提示效果的柱狀圖DEMO
這篇文章主要介紹了Android自定義帶增長動畫和點擊彈窗提示效果的柱狀圖的相關(guān)資料,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下2016-11-11Flutter路由的跳轉(zhuǎn)、動畫和傳參詳解(最簡單)
這篇文章主要給大家介紹了關(guān)于Flutter路由的跳轉(zhuǎn)、動畫和傳參的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-01-01詳解Android中接口回調(diào)、方法回調(diào)
在Android開發(fā)中我們很多地方都用到了方法的回調(diào),回調(diào)就是把方法的定義和功能導入實現(xiàn)分開的一種機制,目的是為了解耦他的本質(zhì)是基于觀察者設(shè)計模式,即觀察者設(shè)計模式的的簡化版。本文主要對Android中接口回調(diào)、方法回調(diào)進行詳細介紹,下面跟著小編一起來看下吧2017-01-01