热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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


推荐阅读
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文介绍了一个使用Slideview组件实现循环轮播效果的例子,并将其作为ListView顶部的一项。此ListView包含了两种不同的模板设计,一种以Slideview为核心,另一种则是标准的单元格模板,包含按钮和标签。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • Python中Seaborn库的整体风格配置详解
    本文介绍了Seaborn,这是一个基于Matplotlib的Python数据可视化库,旨在简化统计图形的绘制过程。文章详细探讨了Seaborn的不同主题风格及其配置方法。 ... [详细]
  • 心理学经典:《思考致富》
    《思考致富》是由美国著名成功学大师拿破仑·希尔撰写的一部重要著作,该书基于希尔长达20年的深入研究和访谈,探讨了个人成功的核心要素。书中不仅揭示了成功的关键,还提供了一系列实用的方法和策略。 ... [详细]
  • 本文将详细介绍如何在二进制和十六进制之间进行准确的转换,并提供实际的代码示例来帮助理解这一过程。 ... [详细]
  • 探索百度WebFE团队打造的强大HTML5上传插件Web Uploader
    本文将详细介绍由百度WebFE团队开发的Web Uploader,这是一款集成了HTML5与Flash技术的上传组件,以其卓越的用户体验和强大的功能著称。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 在尝试使用 Android 发送 SOAP 请求时遇到错误,服务器返回 '无法处理请求' 的信息,并指出某个值不能为 null。本文探讨了可能的原因及解决方案。 ... [详细]
  • 提升移动应用用户体验的8个设计策略
    随着移动应用成为数字世界连接的关键桥梁,用户体验(UX)设计的重要性日益凸显。本文将探讨为何优质的UX设计对移动应用的成功至关重要,并分享8个实用的设计技巧,帮助开发者优化用户体验。 ... [详细]
author-avatar
ENE的蓝白胖次
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有