zoukankan      html  css  js  c++  java
  • Android史上功能最全的日历控件

    效果





    ※用法

    package com.fancyy.calendarweight;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup.LayoutParams;
    import android.view.animation.AnimationUtils;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.PopupWindow;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    
    import com.fancyy.calendarweight.KCalendar.OnCalendarClickListener;
    import com.fancyy.calendarweight.KCalendar.OnCalendarDateChangedListener;
    
    public class MainActivity extends Activity {
    
    	String date = null;// 设置默认选中的日期  格式为 “2014-04-05” 标准DATE格式   
    
    	Button bt;
    
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    
    		setContentView(R.layout.activity_main);
    		bt = (Button) findViewById(R.id.bt);
    		bt.setOnClickListener(new OnClickListener() {
    			public void onClick(View v) {
    				new PopupWindows(MainActivity.this, bt);
    			}
    		});
    	}
    
    	public class PopupWindows extends PopupWindow {
    
    		public PopupWindows(Context mContext, View parent) {
    
    			View view = View.inflate(mContext, R.layout.popupwindow_calendar,
    					null);
    			view.startAnimation(AnimationUtils.loadAnimation(mContext,
    					R.anim.fade_in));
    			LinearLayout ll_popup = (LinearLayout) view
    					.findViewById(R.id.ll_popup);
    			ll_popup.startAnimation(AnimationUtils.loadAnimation(mContext,
    					R.anim.push_bottom_in_1));
    
    			setWidth(LayoutParams.FILL_PARENT);
    			setHeight(LayoutParams.FILL_PARENT);
    			setBackgroundDrawable(new BitmapDrawable());
    			setFocusable(true);
    			setOutsideTouchable(true);
    			setContentView(view);
    			showAtLocation(parent, Gravity.BOTTOM, 0, 0);
    			update();
    
    			final TextView popupwindow_calendar_month = (TextView) view
    					.findViewById(R.id.popupwindow_calendar_month);
    			final KCalendar calendar = (KCalendar) view
    					.findViewById(R.id.popupwindow_calendar);
    			Button popupwindow_calendar_bt_enter = (Button) view
    					.findViewById(R.id.popupwindow_calendar_bt_enter);
    
    			popupwindow_calendar_month.setText(calendar.getCalendarYear() + "年"
    					+ calendar.getCalendarMonth() + "月");
    
    			if (null != date) {
    
    				int years = Integer.parseInt(date.substring(0,
    						date.indexOf("-")));
    				int month = Integer.parseInt(date.substring(
    						date.indexOf("-") + 1, date.lastIndexOf("-")));
    				popupwindow_calendar_month.setText(years + "年" + month + "月");
    
    				calendar.showCalendar(years, month);
    				calendar.setCalendarDayBgColor(date,
    						R.drawable.calendar_date_focused);				
    			}
    			
    			List<String> list = new ArrayList<String>(); //设置标记列表
    			list.add("2014-04-01");
    			list.add("2014-04-02");
    			calendar.addMarks(list, 0);
    
    			//监听所选中的日期
    			calendar.setOnCalendarClickListener(new OnCalendarClickListener() {
    
    				public void onCalendarClick(int row, int col, String dateFormat) {
    					int month = Integer.parseInt(dateFormat.substring(
    							dateFormat.indexOf("-") + 1,
    							dateFormat.lastIndexOf("-")));
    					
    					if (calendar.getCalendarMonth() - month == 1//跨年跳转
    							|| calendar.getCalendarMonth() - month == -11) {
    						calendar.lastMonth();
    						
    					} else if (month - calendar.getCalendarMonth() == 1 //跨年跳转
    							|| month - calendar.getCalendarMonth() == -11) {
    						calendar.nextMonth();
    						
    					} else {
    						calendar.removeAllBgColor(); 
    						calendar.setCalendarDayBgColor(dateFormat,
    								R.drawable.calendar_date_focused);
    						date = dateFormat;//最后返回给全局 date
    					}
    				}
    			});
    
    			//监听当前月份
    			calendar.setOnCalendarDateChangedListener(new OnCalendarDateChangedListener() {
    				public void onCalendarDateChanged(int year, int month) {
    					popupwindow_calendar_month
    							.setText(year + "年" + month + "月");
    				}
    			});
    			
    			//上月监听button
    			RelativeLayout popupwindow_calendar_last_month = (RelativeLayout) view
    					.findViewById(R.id.popupwindow_calendar_last_month);
    			popupwindow_calendar_last_month
    					.setOnClickListener(new OnClickListener() {
    
    						public void onClick(View v) {
    							calendar.lastMonth();
    						}
    
    					});
    			
    			//下月监听button
    			RelativeLayout popupwindow_calendar_next_month = (RelativeLayout) view
    					.findViewById(R.id.popupwindow_calendar_next_month);
    			popupwindow_calendar_next_month
    					.setOnClickListener(new OnClickListener() {
    
    						public void onClick(View v) {
    							calendar.nextMonth();
    						}
    					});
    			
    			//关闭窗体
    			popupwindow_calendar_bt_enter
    					.setOnClickListener(new OnClickListener() {
    
    						public void onClick(View v) {
    							dismiss();
    						}
    					});
    		}
    	}
    
    }
    

    ※Demo下载

    http://download.csdn.net/detail/u010785585/8016687



  • 相关阅读:
    老男孩Python28期班学习笔记day1
    Apache Torque
    管理和维护RHCS集群
    Email邮件服务的搭建(postfix on rhel7.2)
    DS4700控制器重启原因分析
    读懂系统路由表
    一条看不懂的多路径
    基于Vmware-ESXi5.1实验RHCS虚拟Fence设备(一)
    RedHat 6.7 Enterprise x64环境下使用RHCS部署Oracle 11g R2双机HA
    rhcs相关实战教程
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5351439.html
Copyright © 2011-2022 走看看