Andoridカレンダーコントロールライブラリは、左右にスライドできます。西暦、旧暦、祝日などの機能を表示します。


カバー図: 

デモの効果図
 
ソースディレクトリ構造        

Feat ures
  • カレンダーが左右にスライドします。
  • は太陽暦、旧暦、祝日と二十四節気の
  • を表示します。
  • .ある月の日付に対する単一選択または複数選択を実現する。
    使用手順
    Grade Dependency
    Add the library to your project build.gradle
      comple'comp.joback.alendar:librarycarndar:1.0.4'
    Sample Usage
    OnPageChange ListenerとOnDateClickListenerインターフェースを実現します。もし複数選択を実現するなら、OnDateCance Listenerを実現する必要があります。
    
     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カレンダーコントロールの資料整理です。引き続き関連資料を補充します。ありがとうございます。