Andorid 之日历控件,可左右滑动,包含公历,农历,节假日等

这篇博客介绍了如何在Android应用中实现一个包含公历、农历和节假日的日历控件,该控件支持左右滑动切换日期。作者提供了一个MainActivity的代码示例,展示了日期选择和显示的逻辑。由于篇幅限制,完整代码建议通过提供的链接下载查看。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司项目需要日历这个功能,经过查阅资料写了个demo,包含公历,农历,节假日等,还可左右滑动。

效果图:

代码:

 

Java代码
  1. public class MainActivity extends AppCompatActivity implements  
  2.         CalendarViewPagerFragment.OnPageChangeListener,  
  3.         CalendarViewFragment.OnDateClickListener,  
  4.         CalendarViewFragment.OnDateCancelListener {  
  5.   
  6.     private TextView tv_date;  
  7.     private List<CalendarDate> mListDate = new ArrayList<>();  
  8.   
  9.     @Override  
  10.     protected void onCreate(Bundle savedInstanceState) {  
  11.         super.onCreate(savedInstanceState);  
  12.         setContentView(R.layout.activity_main);  
  13.         tv_date = (TextView) findViewById(R.id.tv_date);  
  14.         initFragment();  
  15.     }  
  16.   
  17.     private void initFragment() {  
  18.   
  19.         FragmentManager fm = getSupportFragmentManager();  
  20.         FragmentTransaction tx = fm.beginTransaction();  
  21.         Fragment fragment = CalendarViewPagerFragment.newInstance();  
  22.         tx.replace(R.id.fl_content, fragment);  
  23.         tx.commit();  
  24.     }  
  25.   
  26.     @Override  
  27.     public void onDateClick(CalendarDate calendarDate) {  
  28.   
  29.         int year = calendarDate.getSolar().solarYear;  
  30.         int month = calendarDate.getSolar().solarMonth;  
  31.         int day = calendarDate.getSolar().solarDay;  
  32.         String data;  
  33.         if (day < 10) {  
  34.             data = DateUtils.getWeekday(year + "-" + month + "-0" + day);  
  35.             tv_date.setText(year + "-" + month + "-0" + day + " " + month + "月" + "  " + data);  
  36.         } else {  
  37.             data = DateUtils.getWeekday(year + "-" + month + "-" + day);  
  38.             tv_date.setText(year + "-" + month + "-" + day + " " + month + "月" + "  " + data);  
  39.         }  
  40.   
  41.     }  
  42.   
  43.     @Override  
  44.     public void onDateCancel(CalendarDate calendarDate) {  
  45.     }  
  46.   
  47.     @Override  
  48.     public void onPageChange(int year, int month) {  
  49.         tv_date.setText(year + "-" + month);  
  50.         mListDate.clear();  
  51.     }  
  52.   
  53. }  

 

由于代码太多,完整代码未给出,源码直接下载即可

 

源码点击下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值