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

封面图: 

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) {

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, andorid
, 日历控件
日历
2017年日历节假日、日历节假日、2017年日历法定节假日、2017节假日日历、2016年节假日日历,以便于您获取更多的相关知识。

时间: 2025-01-29 12:06:23

Andorid 日历控件库,可左右滑动,显示公历,农历,节假日等功能_Android的相关文章

WPF中,日历控件(Calendar )的显示大小或者日期选择控件(DatePicker )的显示大小怎么调整?

问题描述 在网上看了不少资料,貌似没有一个很好的答案.虽然这两个控件都有width和height属性,但是设置之后应该是这个控件所占的控件的大小发生了变化,实际上显示的内容并没有发生变化.似乎说可以写样式可以实现,但是挺麻烦的,不知道大家有没有遇到过这样的问题,怎么修改这两个控件实际显示的大小? 解决方案 解决方案二:你如果会使用Blend,就可以自定它的样式.

javascript实现日历控件(年月日关闭按钮)_javascript技巧

经常使用google的朋友一定对google绚丽的日历控件记忆犹新吧,那我们也来实现一个,虽然功能和效果比不上,但重要的是实现的过程. 下面是要实现的html结构: <div id="a"><div id="head"><span id="yface">年:<select id="year"></select></span><span id=&quo

android开发日历控件 可滑动?

问题描述 android开发日历控件 可滑动? 谁有做过安卓 日历控件可滑动,点击又可以编程单行日历的,也可以滑动

常用交互实例:axure常用交互实例日历控件

文章描述:Axure常用交互实例教程:日历控件选择日期. 上次分享了一个Axure常用交互实例带提示文本框和拖拽物的教程,有不少网站有转载,说明内容还是有点价值的.今天分享一个日历控件中的一个常用交互实例:选择日期. 1.日历控件 第一步: 从控件库中拖出两个文本面板和一个矩形框.一个文本面板控件中输入"选择日期"(标签命名为文本1),另一个输入一个默认日期(标签命名为文本2),编辑文本框控件的属性为:文本框. 第二步: 打开日历控件,这里需要注意下,一般自带控件库中是没有日历控件的,

Axure常用交互实例教程:日历控件选择日期

上次分享了一个Axure常用交互实例带提示文本框和拖拽物的教程,有不少网站有转载,说明内容还是有点价值的.今天分享一个日历控件中的一个常用交互实例:选择日期. 实例下载:axure常用交互实例日历控件.rar 1.日历控件 第一步: 从控件库中拖出两个文本面板和一个矩形框.一个文本面板控件中输入"选择日期"(标签命名为文本1),另一个输入一个默认日期(标签命名为文本2),编辑文本框控件的属性为:文本框. 第二步: 打开日历控件,这里需要注意下,一般自带控件库中是没有日历控件的,这里可以

2KB内存单片机上实现彩屏GUI控件库

一. 综述 嵌入式系统发展日新月异,安卓和ios已然战胜了当年雄霸天下的塞班,界面是我们特别看重的因素之一.不过你考虑过自己做一套系统,写一个界面库么?在单片机上自制系统,可以很好的锻炼编程能力和架构设计能力. 这些界面库都是在底层画点画线的驱动程序上实现的,基于我的XMOVE动作感应系统.基本具有硬件无关性.支持彩屏320*240的分辨率,由于考虑不同分辨率的开发过分复杂(想想看你需要计算每个点布局在哪个位置,这对安卓等系统都是大问题),因此我并没有太过完善的考虑过其他分辨率. 我已经写过一篇

XMOVE3.0手持终端——软件介绍(二):在2KB内存的单片机上实现的彩屏GUI控件库

一. 综述 嵌入式系统发展日新月异,安卓和ios已然战胜了当年雄霸天下的塞班,界面是我们特别看重的因素之一.不过你考虑过自己做一套系统,写一个界面库么?在单片机上自制系统,可以很好的锻炼编程能力和架构设计能力. 这些界面库都是在底层画点画线的驱动程序上实现的,基于我的XMOVE动作感应系统.基本具有硬件无关性.支持彩屏320*240的分辨率,由于考虑不同分辨率的开发过分复杂(想想看你需要计算每个点布局在哪个位置,这对安卓等系统都是大问题),因此我并没有太过完善的考虑过其他分辨率. 我已经写过一篇

自定义日历控件-日历控件 (点加减号切换年月日星期) android开发

问题描述 日历控件 (点加减号切换年月日星期) android开发 10C 计算星期几"> 解决方案 大帅手把手教你做日历控件--WinForm窗体控件库和日历算法

iOS开发一款小巧简洁的日历控件

iOS开发一款小巧简洁的日历控件 一.引言         日 历是iOS开发中有时会用到的一个UI控件,网上开源的代码也很多,我浏览过一些,大致有两种模式,一种是日历的逻辑由开发者自己实现,通过计算闰年与平 年来确定月份天数,另外一种模式是通过NSDate这个时间类,来获取日历的信息.我个人认为后一种更加安全,代码性能也会更加优质,下面就是我用这种模 式实现的一个日历控件. 二.设计思路 1.先来看下效果吧                     2.我们需要实现的功能 (1)每行7天,对应星