博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android史上功能最全的日历控件
阅读量:5745 次
发布时间:2019-06-18

本文共 4623 字,大约阅读时间需要 15 分钟。

效果

※用法

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
list = new ArrayList
(); //设置标记列表 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下载

你可能感兴趣的文章
laravel 5.1 的程序性能优化(配置文件)
查看>>
PasswordHasher
查看>>
Python之re模块 —— 正则表达式操作
查看>>
【HDU 5818多校】Joint Stacks
查看>>
iOS 跳转到系统的设置界面-b
查看>>
北航数值分析作业一
查看>>
企业会计准则第39号——公允价值计量
查看>>
Linux下查看文件和文件夹大小
查看>>
java.lang.reflect.InvocationTargetException
查看>>
mysql可以用这种方式<<! 输入内容 ! 做成脚本
查看>>
\r与\n的区别
查看>>
发布自己的类库到NuGet
查看>>
linux下配置mysql默认编码utf8
查看>>
spring depends-on
查看>>
android sudio 打包资料汇总
查看>>
使用ASP.Net WebAPI构建REST服务(五)——客户端
查看>>
GIS基础软件及操作(六)
查看>>
Apple Watch 开发详解
查看>>
ACCESS自动编号重新从1开始
查看>>
ES练习代码
查看>>