Blame view

src/com/squareup/timessquare/CalendarCellView.java 2.57 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
  // Copyright 2013 Square, Inc.
  
  package com.squareup.timessquare;
  
  import android.content.Context;
  import android.util.AttributeSet;
  import android.widget.TextView;
  
  import com.ectrip.trips.check.R;
  import com.squareup.timessquare.MonthCellDescriptor.RangeState;
  
  public class CalendarCellView extends TextView {
  	private static final int[] STATE_SELECTABLE = { R.attr.state_selectable };
  	private static final int[] STATE_CURRENT_MONTH = { R.attr.state_current_month };
  	private static final int[] STATE_TODAY = { R.attr.state_today };
  	private static final int[] STATE_HIGHLIGHTED = { R.attr.state_highlighted };
  	private static final int[] STATE_RANGE_FIRST = { R.attr.state_range_first };
  	private static final int[] STATE_RANGE_MIDDLE = { R.attr.state_range_middle };
  	private static final int[] STATE_RANGE_LAST = { R.attr.state_range_last };
  
  	private boolean isSelectable = false;
  	private boolean isCurrentMonth = false;
  	private boolean isToday = false;
  	private boolean isHighlighted = false;
  	private RangeState rangeState = RangeState.NONE;
  
  	@SuppressWarnings("UnusedDeclaration")
  	public CalendarCellView(Context context, AttributeSet attrs) {
  		super(context, attrs);
  	}
  
  	public void setSelectable(boolean isSelectable) {
  		this.isSelectable = isSelectable;
  		refreshDrawableState();
  	}
  
  	public void setCurrentMonth(boolean isCurrentMonth) {
  		this.isCurrentMonth = isCurrentMonth;
  		refreshDrawableState();
  	}
  
  	public void setToday(boolean isToday) {
  		this.isToday = isToday;
  		refreshDrawableState();
  	}
  
  	public void setRangeState(MonthCellDescriptor.RangeState rangeState) {
  		this.rangeState = rangeState;
  		refreshDrawableState();
  	}
  
  	public void setHighlighted(boolean highlighted) {
  		isHighlighted = highlighted;
  		refreshDrawableState();
  	}
  
  	@Override
  	protected int[] onCreateDrawableState(int extraSpace) {
  		final int[] drawableState = super.onCreateDrawableState(extraSpace + 5);
  
  		if (isSelectable) {
  			mergeDrawableStates(drawableState, STATE_SELECTABLE);
  		}
  
  		if (isCurrentMonth) {
  			mergeDrawableStates(drawableState, STATE_CURRENT_MONTH);
  		}
  
  		if (isToday) {
  			mergeDrawableStates(drawableState, STATE_TODAY);
  		}
  
  		if (isHighlighted) {
  			mergeDrawableStates(drawableState, STATE_HIGHLIGHTED);
  		}
  
  		if (rangeState == MonthCellDescriptor.RangeState.FIRST) {
  			mergeDrawableStates(drawableState, STATE_RANGE_FIRST);
  		} else if (rangeState == MonthCellDescriptor.RangeState.MIDDLE) {
  			mergeDrawableStates(drawableState, STATE_RANGE_MIDDLE);
  		} else if (rangeState == RangeState.LAST) {
  			mergeDrawableStates(drawableState, STATE_RANGE_LAST);
  		}
  
  		return drawableState;
  	}
  }