package com.lashou.calendar;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class Grid extends CalendarParent implements Serializable
{
//修改该
boolean isBefore = false;
Date estimateDate = new Date();
SimpleDateFormat sdf;
java.util.Calendar calendarDate;
private Date selectDate = null;
//修改完
//修改完
private String[] days = new String[42];//这个里面包含了每个月的42个数字
// true表示有记录,false表示没记录
private boolean[] recordDays = new boolean[42];
private String[] monthNames = new String[12];
private TextView tvMsg1;
// private TextView tvMsg2;
// private TextView tvMsg3;
private int dayColor;
private int innerGridColor;
private int prevNextMonthDayColor;
private int currentDayColor;
private int todayColor;
private int todayBackgroundColor;
private int sundaySaturdayPrevNextMonthDayColor;
private float daySize;
private float dayTopOffset;
private float currentDaySize;
private float cellX = -1, cellY = -1;
// 从0开始
private int currentRow, currentCol;
private boolean redrawForKeyDown = false;
//当前的年和月
public int currentYear, currentMonth;
// 上月或者下个月选中的天数
public int currentDay = -1, currentDay1 = -1, currentDayIndex = -1;
private java.util.Calendar calendar = java.util.Calendar.getInstance();
public Date getSelectDate(){
if(!isBefore){
return null;
}
return selectDate;
}
public void setCurrentRow(int currentRow)
{
if (currentRow < 0)
{
currentMonth--;
if (currentMonth == -1)
{
currentMonth = 11;
currentYear--;
}
currentDay = getMonthDays(currentYear, currentMonth) + currentDay
- 7;
currentDay1 = currentDay;
cellX = -1;
cellX = -1;
view.invalidate();
return;
}
else if (currentRow > 5)
{
int n = 0;
for (int i = 35; i < days.length; i++)
{
if (!days[i].startsWith("*"))
n++;
else
break;
}
currentDay = 7 - n + currentCol + 1;
currentDay1 = currentDay;
currentMonth++;
if (currentMonth == 12)
{
currentMonth = 0;
currentYear++;
}
cellX = -1;
cellX = -1;
view.invalidate();
return;
}
this.currentRow = currentRow;
redrawForKeyDown = true;
view.invalidate();
}
private void getRecordDays()
{
int beginIndex = 8;
int endIndex = 7;
int beginDayIndex = 0;
if (currentMonth > 9)
{
beginIndex = 9;
endIndex = 8;
}
for (int i = 0; i < recordDays.length; i++)
recordDays[i] = false;
for (int i = 0; i < days.length; i++)
{
if (!days[i].startsWith("*"))
{
beginDayIndex = i;
break;
}
}
if (days[0].startsWith("*"))
{
int prevYear = currentYear, prevMonth = currentMonth - 1;
if (prevMonth == -1)
{
prevMonth = 11;
prevYear--;
}
int minDay = Integer.parseInt(days[0].substring(1));
}
if (days[days.length - 1].startsWith("*"))
{
int nextYear = currentYear, nextMonth = currentMonth + 1;
if (nextMonth == 12)
{
nextMonth = 0;
nextYear++;
}
int maxDay = Integer.parseInt(days[days.length - 1].substring(1));
}
}
public void setCurrentCol(int currentCol)
{
if (currentCol < 0)
{
if (currentRow == 0)
{
currentMonth--;
if (currentMonth == -1)
{
currentMonth = 11;
currentYear--;
}
currentDay = getMonthDays(currentYear, currentMonth);
currentDay1 = currentDay;
cellX = -1;
cellX = -1;
view.invalidate();
return;
}
else
{
currentCol = 6;
setCurrentRow(--currentRow);
}
}
else if (currentCol > 6)
{
currentCol = 0;
setCurrentRow(++currentRow);
}
this.currentCol = currentCol;
redrawForKeyDown = true;
view.invalidate();
}
public int getCurrentRow()
{
return currentRow;
}
public int getCurrentCol()
{
return currentCol;
}
public void setCellX(float cellX)
{
this.cellX = cellX;
}
public void setCellY(float cellY)
{
this.cellY = cellY;
}
private int getMonthDays(int year, int month)
{
month++;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
return 31;
}
case 4:
case 6:
case 9:
case 11:
{
return 30;
}
case 2:
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
return 29;
else
return 28;
}
}
return 0;
}
private void calculateDays()
{
calendar.set(currentYear, currentMonth, 1);
int week = calendar.get(calendar.DAY_OF_WEEK);
int monthDays = 0;
int prevMonthDays = 0;
monthDays = getMonthDays(currentYear, currentMonth);
if (currentMonth == 0)
prevMonthDays = getMonthDays(currentYear - 1, 11);
else
prevMonthDays = getMonthDays(currentYear, currentMonth - 1);
for (int i = week, day = prevMonthDays; i > 1; i--, day--)
{
days[i - 2] = "*" + String.valueOf(day);
}
for (int day = 1, i = week - 1; day <= monthDays; day++, i++)
{
days[i] = String.valueOf(day);
if (day == currentDay)
{
currentDayIndex = i;
}
}
for (int i = week + monthDays - 1, day = 1; i < days.length; i++, day++)
{
days[i] = "*" + String.valueOf(day);
}
}
public Grid(Activity activity, View view)
{
super(activity, view);
tvMsg1 = (TextView) activity.findViewById(R.id.data);
// tvMsg2 = (TextView) activity.findViewById(R.id.month);
dayColor = activity.getResources().getColor(R.color.day_color);//白色
todayColor = activity.getResources().getColor(R.color.today_color);
todayBackgroundColor = activity.getResources().getColor(
R.color.today_background_color);
innerGridColor = activity.getResources().getColor(
R.color.inner_grid_color);
prevNextMonthDayColor = activity.getResources().getColor(
R.color.prev_next_month_day_color);
currentDayColor = activity.getResources().getColor(
R.color.current_day_color);//星期六、日文字颜色
sundaySaturdayPrevNextMonthDayColor = activity.getResources().getColor(
R.color.sunday_saturday_prev_next_month_day_color);
daySize = activity.getResources().getDimension(R.dimen.day_size);
dayTopOffset = activity.getResources().getDimension(
R.dimen.day_top_offset);
currentDaySize = activity.getResources().getDimension(
R.dimen.current_day_size);
// monthNames = activity.getResources().getStringArray(R.array.month_name);
paint.setColor(activity.getResources().getColor(R.color.border_color));
currentYear = calendar.get(calendar.YEAR);
currentMonth = calendar.get(calendar.MONTH);
}
private boolean isCurrentDay(int dayIndex, int currentDayIndex,
Rect cellRect)
{
boolean result = false;
if (redrawForKeyDown == true)
{
result = dayIndex == (7 * ((currentRow > 0) ? currentRow : 0) + currentCol);
if (result)
redrawForKeyDown = false;
}
else if (cellX != -1 && cellY != -1)
{
if (cellX >= cellRect.left && cellX <= cellRect.right
&& cellY >= cellRect.top && cellY <= cellRect.bottom)
{
result = true;
}
else
{
result = false;
}
}
else
{
result = (dayIndex == currentDayIndex);
}
if (result)
{
if (currentRow > 0 && currentRow < 6)
{
currentDay1 = currentDay;
}
currentDayIndex = -1;
cellX = -1;
cellY = -1;
}
return result;
}
// 更新当前
没有合适的资源?快使用搜索试试~ 我知道了~
android日历 calendar的使用
共52个文件
class:21个
java:11个
xml:6个
4星 · 超过85%的资源 需积分: 13 48 下载量 109 浏览量
2011-08-08
17:57:16
上传
评论 1
收藏 98KB RAR 举报
温馨提示
获得日历的年月日和周,对日历界面进行画图显示,对日历时间进行画图显示,对下个月上个月进行处理。
资源推荐
资源详情
资源评论
收起资源包目录
CalendarTest.rar (52个子文件)
CalendarTest
.project 848B
default.properties 362B
bin
com
lashou
calendar
CalendarView.class 2KB
R$string.class 542B
Week.class 2KB
R$layout.class 426B
MainActivity.class 2KB
R$dimen.class 661B
R$drawable.class 462B
R$array.class 433B
CalendarParent.class 1KB
Calendar.class 2KB
Border.class 1KB
Grid.class 11KB
MyCalendarActivity$1.class 849B
R.class 685B
R$color.class 994B
Remind.class 429B
MyCalendarActivity.class 2KB
CalendarElement.class 177B
R$attr.class 343B
MainActivity$1.class 806B
R$id.class 590B
CalendarTest.apk 29KB
resources.ap_ 17KB
classes.dex 20KB
proguard.cfg 1KB
.settings
org.eclipse.core.runtime.prefs 83B
org.eclipse.core.resources.prefs 88B
AndroidManifest.xml 684B
src
com
lashou
calendar
MyCalendarActivity.java 2KB
Border.java 761B
Grid.java 15KB
CalendarElement.java 143B
Remind.java 189B
Week.java 1KB
MainActivity.java 1KB
CalendarParent.java 987B
Calendar.java 1KB
CalendarView.java 1KB
res
values
dimension.xml 503B
colors.xml 877B
strings.xml 816B
layout
begin.xml 513B
main.xml 2KB
drawable-ldpi
icon.png 2KB
drawable-hdpi
picture.png 3KB
xin1.png 6KB
icon.png 4KB
drawable-mdpi
icon.png 3KB
.classpath 280B
gen
com
lashou
calendar
R.java 3KB
assets
共 52 条
- 1
dabenben_ben
- 粉丝: 30
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页