当前位置: 首页 > 编程笔记 >

Andorid 日历控件库,可左右滑动,显示公历,农历,节假日等功能

巫马庆
2023-03-14
本文向大家介绍Andorid 日历控件库,可左右滑动,显示公历,农历,节假日等功能,包括了Andorid 日历控件库,可左右滑动,显示公历,农历,节假日等功能的使用技巧和注意事项,需要的朋友参考一下

封面图: 

demo效果图

 

源码目录结构        

Features

  1. 日历左右滑动.
  2. 显示阳历,农历,节假日和二十四节气
  3. 实现对某月日期的单选或者多选.

使用步骤

Gradle Dependency

Add the library to your project build.gradle

  compile 'com.joybar.calendar:librarycalendar:1.0.4'

Sample Usage

实现OnPageChangeListener和OnDateClickListener接口,如果实现多选,需要实现 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) {

 html" target="_blank">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();

 }

 

}

单选或者多选的实现代码

 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 日历控件的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

 类似资料:
  • 日历demo,可以显示阳历和阴历,显示范围是1900年到2100年。左右滑动手势切换月份,标题点击出现年份和月份选择器,“今天”按钮返回当日,每天日期均可点击(接口已经预留),“今天”的lable背景呈现黄色。 [Code4App.com]

  • 本文向大家介绍JavaScript实现公历转农历功能示例,包括了JavaScript实现公历转农历功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现公历转农历功能。分享给大家供大家参考,具体如下: 完整代码(该源码使用在线工具http://tools.jb51.net/code/js进行了格式化处理,以便于读者阅读): 运行效果图如下: PS:这里再为大家推荐

  • 本文向大家介绍小程序实现日历左右滑动效果,包括了小程序实现日历左右滑动效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了小程序日历左右滑动效果的具体代码,供大家参考,具体内容如下 效果图 wxml js 样式 更多教程点击《Vue.js前端组件学习教程》,欢迎大家学习阅读。 关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。 以上就是本文的全部内容,希望对

  • 介绍 农历日期,提供了生肖、天干地支、传统节日等方法。 使用 构建ChineseDate对象 ChineseDate表示了农历的对象,构建此对象既可以使用公历的日期,也可以使用农历的日期。 //通过农历构建 ChineseDate chineseDate = new ChineseDate(1992,12,14); //通过公历构建 ChineseDate chineseDate = new C

  • 只用我的日历ID工作得很好. en.thai#holiday@group.v3.calendar.google.com |en.th#holiday@group.v3.calendar.google.com | 请帮忙谢谢你 calenderId:“me”或“primary………..output:”所有事件列表“ 日历Id:en.th#holiday@group.v3.calendar.googl

  • 我正在尝试使用谷歌日历API创建谷歌日历事件。具体来说,我使用的是服务帐户方法,因为我的应用程序将运行一系列事件来创建并将它们插入我的谷歌日历。使用的语言是PHP。 我已经从gitHub下载了PHP客户端库。https://github.com/googleapis/google-api-php-client. 我的测试代码在下面。这成功地完成了,并给我回了一个长的事件标识。然而,当我尝试将其粘贴