源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-02-07 22:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Andorid 日历控件库,可左右滑动,显示公历,农历,节假日等功能
[b]封面图: [/b] [img]http://files.jb51.net/file_images/article/201609/201692091201584.png?201682091240[/img] [b]demo效果图[/b]  [img]http://files.jb51.net/file_images/article/201609/201692091311577.gif?201682091325[/img] [b]源码目录结构        [/b] [img]http://files.jb51.net/file_images/article/201609/201692091347200.gif?20168209140[/img] Features [list=1] [*]日历左右滑动.[/*] [*]显示阳历,农历,节假日和二十四节气[/*] [*]实现对某月日期的单选或者多选.[/*] [/list] [b]使用步骤[/b] Gradle Dependency Add the library to your project build.gradle   compile 'com.joybar.calendar:librarycalendar:1.0.4' [b]Sample Usage[/b] 实现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 日历控件的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部