Android 日歷控件庫(kù),可左右滑動(dòng),顯示公歷,農(nóng)歷,節(jié)假日等功能
封面圖:

demo效果圖

源碼目錄結(jié)構(gòu)

Features
- 日歷左右滑動(dòng).
- 顯示陽(yáng)歷,農(nóng)歷,節(jié)假日和二十四節(jié)氣
- 實(shí)現(xiàn)對(duì)某月日期的單選或者多選.
使用步驟
Gradle Dependency
Add the library to your project build.gradle
compile 'com.joybar.calendar:librarycalendar:1.0.4'
Sample Usage
實(shí)現(xiàn)OnPageChangeListener和OnDateClickListener接口,如果實(shí)現(xiàn)多選,需要實(shí)現(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();
}
}
單選或者多選的實(shí)現(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ù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
- Android TextView字幕效果實(shí)例
- Android自定義attr的各種坑
- Android開(kāi)發(fā)之Picasso通過(guò)URL獲取用戶頭像的圓形顯示
- Android實(shí)現(xiàn)精確到天時(shí)分秒的搶購(gòu)倒計(jì)時(shí)
- Android 系統(tǒng)實(shí)現(xiàn)多種開(kāi)機(jī)動(dòng)畫(huà)和logo切換功能
- Android?jar庫(kù)源碼Bolts原理解析
- Android使用手勢(shì)監(jiān)聽(tīng)器GestureDetector遇到的不響應(yīng)問(wèn)題
- Android?狀態(tài)管理之Lifecycle淺析
相關(guān)文章
Android手機(jī)號(hào)碼輸入框(滿11位自動(dòng)跳到下個(gè)輸入框)實(shí)例代碼
這篇文章主要介紹了Android手機(jī)號(hào)碼輸入框(滿11位自動(dòng)跳到下個(gè)輸入框)實(shí)例代碼,需要的朋友可以參考下2017-10-10
Android 自定義Button控件實(shí)現(xiàn)按鈕點(diǎn)擊變色
這篇文章給大家介紹了android 自定義Button控件實(shí)現(xiàn)按鈕點(diǎn)擊變色的代碼,本文給大家附有注釋,非常不錯(cuò),代碼簡(jiǎn)單易懂,對(duì)android按鈕點(diǎn)擊變色的實(shí)現(xiàn)感興趣的朋友參考下吧2016-11-11
Android AccessibilityService實(shí)現(xiàn)微信搶紅包插件
這篇文章主要介紹了Android AccessibilityService實(shí)現(xiàn)微信搶紅包插件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Android如何判斷一個(gè)點(diǎn)在不在多邊形區(qū)域內(nèi)
這篇文章主要為大家詳細(xì)介紹了Android判斷一個(gè)點(diǎn)在不在多邊形區(qū)域內(nèi)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android利用滑動(dòng)菜單框架實(shí)現(xiàn)滑動(dòng)菜單效果
這篇文章主要介紹了Android實(shí)現(xiàn)滑動(dòng)菜單特效之滑動(dòng)菜單框架完全解析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Android關(guān)于WebView中無(wú)法定位的問(wèn)題解決
本篇文章主要介紹了Android關(guān)于WebView中無(wú)法定位的問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10

