Andoridカレンダーコントロールライブラリは、左右にスライドできます。西暦、旧暦、祝日などの機能を表示します。
5884 ワード
カバー図:
デモの効果図
ソースディレクトリ構造
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を実現する必要があります。
以上はAndroidカレンダーコントロールの資料整理です。引き続き関連資料を補充します。ありがとうございます。
デモの効果図
ソースディレクトリ構造
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カレンダーコントロールの資料整理です。引き続き関連資料を補充します。ありがとうございます。