Blame view

src/com/squareup/timessquare/MonthView.java 3.51 KB
3c2353cd   杜方   1、畅游通核销app源码提交;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  // Copyright 2012 Square, Inc.
  package com.squareup.timessquare;
  
  import java.text.DateFormat;
  import java.util.Calendar;
  import java.util.List;
  
  import android.content.Context;
  import android.util.AttributeSet;
  import android.view.LayoutInflater;
  import android.view.ViewGroup;
  import android.widget.LinearLayout;
  import android.widget.TextView;
  
  import com.ectrip.trips.check.R;
  
  public class MonthView extends LinearLayout {
  	TextView title;
  	CalendarGridView grid;
  	private Listener listener;
  
  	public static MonthView create(ViewGroup parent, LayoutInflater inflater,
  			DateFormat weekdayNameFormat, Listener listener, Calendar today,
  			int dividerColor, int dayBackgroundResId, int dayTextColorResId,
  			int titleTextColor, int headerTextColor) {
  		final MonthView view = (MonthView) inflater.inflate(R.layout.mr_month,
  				parent, false);
  		view.setDividerColor(dividerColor);
  		view.setDayTextColor(dayTextColorResId);
  		view.setTitleTextColor(titleTextColor);
  		view.setHeaderTextColor(headerTextColor);
  
  		if (dayBackgroundResId != 0) {
  			view.setDayBackground(dayBackgroundResId);
  		}
  
  		final int originalDayOfWeek = today.get(Calendar.DAY_OF_WEEK);
  
  		int firstDayOfWeek = today.getFirstDayOfWeek();
  		final CalendarRowView headerRow = (CalendarRowView) view.grid
  				.getChildAt(0);
  		for (int offset = 0; offset < 7; offset++) {
  			today.set(Calendar.DAY_OF_WEEK, firstDayOfWeek + offset);
  			final TextView textView = (TextView) headerRow.getChildAt(offset);
  			textView.setText(weekdayNameFormat.format(today.getTime()));
  		}
  		today.set(Calendar.DAY_OF_WEEK, originalDayOfWeek);
  		view.listener = listener;
  		return view;
  	}
  
  	public MonthView(Context context, AttributeSet attrs) {
  		super(context, attrs);
  	}
  
  	@Override
  	protected void onFinishInflate() {
  		super.onFinishInflate();
  		title = (TextView) findViewById(R.id.title);
  		grid = (CalendarGridView) findViewById(R.id.calendar_grid);
  	}
  
  	public void init(MonthDescriptor month,
  			List<List<MonthCellDescriptor>> cells, boolean displayOnly) {
  		long start = System.currentTimeMillis();
  		title.setText(month.getLabel());
  
  		final int numRows = cells.size();
  		grid.setNumRows(numRows);
  		for (int i = 0; i < 6; i++) {
  			CalendarRowView weekRow = (CalendarRowView) grid.getChildAt(i + 1);
  			weekRow.setListener(listener);
  			if (i < numRows) {
  				weekRow.setVisibility(VISIBLE);
  				List<MonthCellDescriptor> week = cells.get(i);
  				for (int c = 0; c < week.size(); c++) {
  					MonthCellDescriptor cell = week.get(c);
  					CalendarCellView cellView = (CalendarCellView) weekRow
  							.getChildAt(c);
  
  					cellView.setText(Integer.toString(cell.getValue()));
  					cellView.setEnabled(cell.isCurrentMonth());
  					cellView.setClickable(!displayOnly);
  
  					cellView.setSelectable(cell.isSelectable());
  					cellView.setSelected(cell.isSelected());
  					cellView.setCurrentMonth(cell.isCurrentMonth());
  					cellView.setToday(cell.isToday());
  					cellView.setRangeState(cell.getRangeState());
  					cellView.setHighlighted(cell.isHighlighted());
  					cellView.setTag(cell);
  				}
  			} else {
  				weekRow.setVisibility(GONE);
  			}
  		}
  	}
  
  	public void setDividerColor(int color) {
  		grid.setDividerColor(color);
  	}
  
  	public void setDayBackground(int resId) {
  		grid.setDayBackground(resId);
  	}
  
  	public void setDayTextColor(int resId) {
  		grid.setDayTextColor(resId);
  	}
  
  	public void setTitleTextColor(int color) {
  		title.setTextColor(color);
  	}
  
  	public void setHeaderTextColor(int color) {
  		grid.setHeaderTextColor(color);
  	}
  
  	public interface Listener {
  		void handleClick(MonthCellDescriptor cell);
  	}
  }