編輯:關於Android編程
封面圖:

demo效果圖

源碼目錄結構

Features
使用步驟
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自帶日歷日程
Android中的日歷,只有真機才有,模擬上是沒有的,所以測試環境一定要真機!! 因為日歷是系統自帶的,所以我們讀寫它一定要申請權限,也就是在AndroidManife
Android自定義屬性為應用程序設置全局背景
關於自定義屬性,我們用的比較多的時候就是在自定義view的時候了,其實自定義屬性還有一些其余的妙用。這裡講解一個利用自定義的屬性為應用程序全局的替換背景的例子。1.And
eclipse中運行monkeyrunner腳本之環境搭建(4)
monkeyrunner腳本使用Python語法編寫,但它實際上是通過Jython來解釋執行。 Jython是Python的Java實現,它將Python代碼解釋成Jav
手機qq討論組怎麼建 手機qq討論組怎麼刪人
電腦版qq能夠創建討論組,那手機qq呢?答案是肯定的,手機qq討論組怎麼建?手機qq討論組怎麼刪人?下面我們就來看看相關的操作吧!手機qq討論組怎麼建1、首