源码|实用日历控件
创始人
2025-01-27 21:40:59
0次

源码简介:自己改造的实用的日历控件,pop效果,附带动画。

下载地址:http://down.51cto.com/data/2194851

源码效果:

源码片段:

  1. public static synchronized PopCalendar getInstance(Context context, View parent, int gravity, OnCellClickListener onClickdate, 
  2.             OnClickListener onConfirm, OnDismissListener onDismiss) { 
  3.         if (gravity != -1) { 
  4.             GRAVITY_FOR_POP = gravity; 
  5.         } 
  6.         if (context == null) { 
  7.             return null; 
  8.         } 
  9.         if (parent == null) { 
  10.             return null; 
  11.         } 
  12.   
  13.         if (null == instance) { 
  14.             View view = LayoutInflater.from(context).inflate(R.layout.layout_calendar, null); 
  15.             mViewPager = (ViewPager) view.findViewById(R.id.activity_user_calendar_Viewpager); 
  16.             preImgBtn = (ImageButton) view.findViewById(R.id.activity_user_calendar_PreMonthBtn); 
  17.             nextImgBtn = (ImageButton) view.findViewById(R.id.activity_user_calendar_NextMonthBtn); 
  18.             slide_time = (TextView) view.findViewById(R.id.slide_time); 
  19.             TextView btn_confirm = (TextView) view.findViewById(R.id.tv_confirm); 
  20.             // 下面是两种方法得到宽度和高度 getWindow().getDecorView().getWidth() 
  21.             instance = new PopCalendar(view, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT, parent); 
  22.   
  23.             final OnCellClickListener listener = onClickdate; 
  24.   
  25.             preImgBtn.setOnClickListener(new View.OnClickListener() { 
  26.   
  27.                 @Override 
  28.                 public void onClick(View v) { 
  29.                     mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1); 
  30.                 } 
  31.             }); 
  32.             nextImgBtn.setOnClickListener(new View.OnClickListener() { 
  33.   
  34.                 @Override 
  35.                 public void onClick(View v) { 
  36.                     mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1); 
  37.                 } 
  38.             }); 
  39.   
  40.             Calendar c = Calendar.getInstance(); 
  41.   
  42.             CalendarCard[] views = new CalendarCard[3]; 
  43.             for (int i = 0; i < 3; i++) { 
  44.                 views[i] = new CalendarCard(context, new OnCellClickListener() { 
  45.   
  46.                     @Override 
  47.                     public void clickDate(CustomDate date) { 
  48.                         if (listener != null) { 
  49.                             listener.clickDate(date); 
  50.                         } 
  51.                         // window.dismiss(); 
  52.                     } 
  53.   
  54.                     @Override 
  55.                     public void changeDate(CustomDate date) { 
  56.                         slide_time.setText(date.year + "年" + date.month + "月"); 
  57.                     } 
  58.                 }, liang); 
  59.             } 
  60.   
  61.             adapter = new CalendarViewAdapter(views); 
  62.             setViewPager(); 
  63.   
  64.             // 设置popWindow弹出窗体可点击,这句话必须添加,并且是true 
  65.             instance.setFocusable(true); 
  66.   
  67.             // 实例化一个ColorDrawable颜色为半透明 
  68.             ColorDrawable dw = new ColorDrawable(0xffffffff); 
  69.             instance.setBackgroundDrawable(dw); 
  70.             final OnClickListener onclick = onConfirm; 
  71.             btn_confirm.setOnClickListener(new View.OnClickListener() { 
  72.   
  73.                 @Override 
  74.                 public void onClick(View v) { 
  75.                     if (onclick != null) { 
  76.                         onclick.onClick(v); 
  77.                     } 
  78.                     instance.dismiss(); 
  79.                 } 
  80.             }); 
  81.   
  82.             // 设置popWindow的显示和消失动画 
  83.             instance.setAnimationStyle(R.style.mypopwindow_anim_style); 
  84.             // 在底部显示 
  85.             // View parent = activity.findViewById(R.id.contact_main); 
  86.             // window.showAtLocation(parent, GRAVITY_FOR_POP, X_LOCATION, 
  87.             // Y_LOCATION); 
  88.             final OnDismissListener dListener = onDismiss; 
  89.             // popWindow消失监听方法 
  90.             instance.setOnDismissListener(new OnDismissListener() { 
  91.   
  92.                 @Override 
  93.                 public void onDismiss() { 
  94.                     if (dListener != null) { 
  95.                         dListener.onDismiss(); 
  96.                     } 
  97.                     System.out.println("popWindow消失"); 
  98.                 } 
  99.             }); 
  100.         } 
  101.         return instance; 
  102.     } 

 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...