package com.decarta.calendar;
import java.util.ArrayList;
import java.util.Calendar;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
/**
* Android日历控件示例
* @Description:Android日历控件示例
* @FileName: DateWidget.java
* @Package com.decarta.calendar
* @Author Hanyonglu
* @Date 2012-3-26 上午11:46:14
* @Version V1.0
*/
public class DateWidget extends Activity {
private ArrayList<DateWidgetDayCell> days = new ArrayList<DateWidgetDayCell>();
private Calendar calStartDate = Calendar.getInstance();
private Calendar calToday = Calendar.getInstance();
private Calendar calCalendar = Calendar.getInstance();
private Calendar calSelected = Calendar.getInstance();
LinearLayout layContent = null;
Button btnToday = null;
private int iFirstDayOfWeek = Calendar.SUNDAY;
private int iMonthViewCurrentMonth = 0;
private int iMonthViewCurrentYear = 0;
public static final int SELECT_DATE_REQUEST = 111;
private static final int iDayCellSize = 38;
private static final int iDayHeaderHeight = 24;
private static final int iTotalWidth = (iDayCellSize * 7);
private TextView tv,monthTextView,yearTextView;
private int mYear;
private int mMonth;
private int mDay;
private int type;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = this.getIntent().getExtras();
type = bundle.getInt("type");
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); //声明使用自定义标题
iFirstDayOfWeek = Calendar.SUNDAY;
mYear = calSelected.get(Calendar.YEAR);
mMonth = calSelected.get(Calendar.MONTH);
mDay = calSelected.get(Calendar.DAY_OF_MONTH);
setContentView(generateContentView());
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);//自定义布局赋值
calStartDate = getCalendarStartDate();
DateWidgetDayCell daySelected = updateCalendar();
updateControlsState();
if (daySelected != null)
daySelected.requestFocus();
}
@Override
public void onStart() {
super.onStart();
}
private LinearLayout createLayout(int iOrientation) {
LinearLayout lay = new LinearLayout(this);
lay.setLayoutParams(new LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
lay.setOrientation(iOrientation);
return lay;
}
private Button createButton(String sText, int iWidth, int iHeight) {
Button btn = new Button(this);
btn.setText(sText);
btn.setLayoutParams(new LayoutParams(iWidth, iHeight));
return btn;
}
private void generateTopButtons(LinearLayout layTopControls) {
final int iSmallButtonWidth = 40;
btnToday = createButton("", iTotalWidth - iSmallButtonWidth*4,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
monthTextView = new TextView(this);
monthTextView.setPadding(8, 8, 8, 8);
monthTextView.setText(mYear+"");
monthTextView.setWidth(55);
yearTextView = new TextView(this);
yearTextView.setPadding(20, 8, 8, 8);
yearTextView.setText(format(mMonth+1));
yearTextView.setWidth(55);
Button btnPrevMonth = new Button(this);
btnPrevMonth.setLayoutParams(new LayoutParams(iSmallButtonWidth,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
btnPrevMonth.setBackgroundResource(R.drawable.prev_month);
Button btnPrevYear = new Button(this);
btnPrevYear.setLayoutParams(new LayoutParams(iSmallButtonWidth,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
btnPrevYear.setBackgroundResource(R.drawable.prev_year);
Button btnNextMonth = new Button(this);
btnNextMonth.setLayoutParams(new LayoutParams(iSmallButtonWidth,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
btnNextMonth.setBackgroundResource(R.drawable.next_month);
Button btnNextYear = new Button(this);
btnNextYear.setLayoutParams(new LayoutParams(iSmallButtonWidth,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
btnNextYear.setBackgroundResource(R.drawable.next_year);
// set events
btnPrevMonth.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
setPrevMonthViewItem();
}
});
btnNextMonth.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
setNextMonthViewItem();
}
});
btnPrevYear.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
setPrevYearViewItem();
}
});
btnNextYear.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
setNextYearViewItem();
}
});
layTopControls.setGravity(Gravity.CENTER_HORIZONTAL);
layTopControls.addView(btnPrevYear);
layTopControls.addView(btnPrevMonth);
layTopControls.addView(monthTextView);
layTopControls.addView(yearTextView);
layTopControls.addView(btnNextMonth);
layTopControls.addView(btnNextYear);
}
private View generateContentView() {
LinearLayout layMain = createLayout(LinearLayout.VERTICAL);
layMain.setPadding(8, 8, 8, 8);
LinearLayout layTopControls = createLayout(LinearLayout.HORIZONTAL);
layContent = createLayout(LinearLayout.VERTICAL);
layContent.setPadding(20, 0, 20, 0);
generateTopButtons(layTopControls);
generateCalendar(layContent);
layMain.addView(layTopControls);
layMain.addView(layContent);
tv = new TextView(this);
tv.setPadding(20, 0, 20, 0);
layMain.addView(tv);
return layMain;
}
private View generateCalendarRow() {
LinearLayout layRow = createLayout(LinearLayout.HORIZONTAL);
for (int iDay = 0; iDay < 7; iDay++) {
DateWidgetDayCell dayCell = new DateWidgetDayCell(this,
iDayCellSize, iDayCellSize);
dayCell.setItemClick(mOnDayCellClick);
days.add(dayCell);
layRow.addView(dayCell);
}
return layRow;
}
private View generateCalendarHeader() {
LinearLayout layRow = createLayout(LinearLayout.HORIZONTAL);
for (int iDay = 0; iDay < 7; iDay++) {
DateWidgetDayHeader day = new DateWidgetDayHeader(this,
iDayCellSize, iDayHeaderHeight);
final int iWeekDay = DayStyle.getWeekDay(iDay, iFirstDayOfWeek);
day.setData(iWeekDay);
layRow.addView(day);
}
return layRow;
}
private void generateCalendar(LinearLayout layContent) {
layContent.addView(generateCalendarHeader());
days.clear();
for (int iRow = 0; iRow < 6; iRow++) {
layContent.addView(generateCalendarRow());
}
}
private Calendar getCalendarStartDate() {
calToday.setTimeInMillis(System.currentTimeMillis());
calToday.setFirstDayOfWeek(iFirstDayOfWeek);
if (calSelected.getTimeInMillis() == 0) {
calStartDate.setTimeInMillis(System.currentTimeMillis());
calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);
} else {
calStartDate.setTimeInMillis(calSelected.getTimeInMillis());
calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);
}
updateStartDateForMonth();
return calStartDate;
}
private DateWidgetDayCell updateCalendar() {
DateWidgetDayCell daySelected = null;
boolean bSelected = false;
final boolean bIsSelection = (calSelected.getTimeInMillis() != 0);
final int iSelectedYear = calSelected.get(Calendar.YEAR);
final int iSelectedMonth = calSelected.get(Calendar.MONTH);
final int iSelectedDay = calSelected.get(Calendar.DAY_OF_MONTH);
calCalendar.setTimeInMillis(calStartDate.getTimeInMillis());
for (int i = 0; i < days.size(); i++) {
final int iYear = calCalendar.get(Calendar.YEAR);
final int iMonth = calCalend
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MyCalendarView.rar (80个子文件)
MyCalendarView
bin
classes.dex 23KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
prev_month.png 2KB
prev_year.png 3KB
icon.png 4KB
next_month.png 2KB
next_year.png 3KB
drawable-mdpi
icon.png 2KB
com
decarta
calendar
DateWidget$2.class 822B
Main$2.class 1KB
R$layout.class 429B
SymbolButton.class 2KB
R$id.class 429B
R$drawable.class 540B
SymbolButton$symbol.class 1KB
DateWidget.class 11KB
DateWidget$4.class 822B
R$attr.class 346B
R.class 595B
Main.class 2KB
DateWidget$1.class 1KB
DateWidget$3.class 822B
DateWidgetDayCell$OnItemClick.class 301B
Main$1.class 1KB
DateWidgetDayCell.class 7KB
R$string.class 404B
DateWidgetDayHeader.class 3KB
DayStyle.class 2KB
R$style.class 478B
DateWidget$5.class 822B
classes
com
decarta
calendar
DateWidget$2.class 822B
Main$2.class 1KB
R$layout.class 429B
SymbolButton.class 2KB
R$id.class 429B
R$drawable.class 540B
SymbolButton$symbol.class 1KB
DateWidget.class 11KB
DateWidget$4.class 822B
R$attr.class 346B
R.class 595B
Main.class 2KB
DateWidget$1.class 1KB
DateWidget$3.class 822B
DateWidgetDayCell$OnItemClick.class 301B
Main$1.class 1KB
DateWidgetDayCell.class 7KB
R$string.class 404B
DateWidgetDayHeader.class 3KB
DayStyle.class 2KB
R$style.class 478B
DateWidget$5.class 822B
resources.ap_ 23KB
MyCalendarView.apk 37KB
MyCalendar.apk 37KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
prev_month.png 5KB
prev_year.png 3KB
icon.png 4KB
next_month.png 5KB
next_year.png 6KB
values
themes.xml 415B
strings.xml 112B
styles.xml 365B
drawable-mdpi
icon.png 3KB
layout
title.xml 415B
main.xml 1KB
assets
default.properties 36B
gen
com
decarta
calendar
R.java 1KB
.settings
org.eclipse.core.resources.prefs 88B
src
com
decarta
calendar
DateWidgetDayHeader.java 2KB
DateWidget.java 13KB
DateWidgetDayCell.java 6KB
DayStyle.java 3KB
SymbolButton.java 2KB
Main.java 2KB
.project 850B
.classpath 364B
project.properties 360B
AndroidManifest.xml 716B
共 80 条
- 1
资源评论
- sina_2613142013-09-16太好了。很有用啊
- maxiaowen20102014-06-13不错的资源,有用
- 金满溢2013-10-27太好了。很有用啊
- hitanhui2014-07-29不错的资源,很基础。感觉和系统自带的差不多
yanjunhui2011
- 粉丝: 14
- 资源: 50
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功