文章由来:学习一下日历控件的实现,Android3.0以下的版本请查阅其他文章。
本文主要是介绍Android日历视图控件CalendarView相关的内容,然后在后面会给出一个简单的Demo。
CalendarView继承自FrameLayout
其他文章都引用的类似的java代码示例如下:
public class MainActivity extends Activity implements OnClickListener, OnDateChangeListener { private CalendarView calendarView; private TextView tvCalendar, tvReminder, tvNote, tvMore; private ImageView ivNext; private ImageView ivPrevious; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); // initData(); // initUI(); } }
这部分代码的工作主要在于加载layout,CalendarView被使用的时候有一些默认值,这里对默认值做了一点点改动,对界面进行美化。
xml代码中CalendarView部分如下:
<LinearLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_weight="8" android:orientation="vertical" > <CalendarView android:id="@+id/calendarview" android:layout_width="fill_parent" android:layout_height="match_parent" android:focusedMonthDateColor="@color/whitesmoke" android:unfocusedMonthDateColor="@color/transparent" android:selectedWeekBackgroundColor="@color/transparent" android:showWeekNumber="false" android:weekSeparatorLineColor="@color/transparent" /> </LinearLayout>
实现的效果图是这样的:
以上代码就引出了使用到了CalendarView类的属性设置,看看在设置是用得较多的代码:
公有方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
getDate()
Gets the selected date in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
getDateTextAppearance()
Gets the text appearance for the calendar dates.
|
|||||||||||
getFirstDayOfWeek()
Gets the first day of week.
|
|||||||||||
getFocusedMonthDateColor()
Gets the color for the dates in the focused month.
|
|||||||||||
getMaxDate()
Gets the maximal date supported by this
CalendarView in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
getMinDate()
Gets the minimal date supported by this
CalendarView in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
getSelectedDateVerticalBar()
Gets the drawable for the vertical bar shown at the beginning and at the end of the selected date.
|
|||||||||||
getSelectedWeekBackgroundColor()
Gets the background color for the selected week.
|
|||||||||||
getShowWeekNumber()
Gets whether to show the week number.
|
|||||||||||
getShownWeekCount()
Gets the number of weeks to be shown.
|
|||||||||||
getUnfocusedMonthDateColor()
Gets the color for the dates in a not focused month.
|
|||||||||||
getWeekDayTextAppearance()
Gets the text appearance for the week day abbreviation of the calendar header.
|
|||||||||||
getWeekNumberColor()
Gets the color for the week numbers.
|
|||||||||||
getWeekSeparatorLineColor()
Gets the color for the separator line between weeks.
|
|||||||||||
isEnabled()
返回该视图的活性状态.由子类来解释各自的活性状态.
|
|||||||||||
onInitializeAccessibilityEvent(AccessibilityEvent event)
使用作为事件源的该视图的信息初始化
AccessibilityEvent 事件.换句话说, 该视图状态的变化是触发辅助事件的源头.
|
|||||||||||
onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)
使用该视图的信息初始化
AccessibilityNodeInfo 对象.
|
|||||||||||
setDate(long date)
Sets the selected date in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
setDate(long date, boolean animate, boolean center)
Sets the selected date in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
setDateTextAppearance(int resourceId)
Sets the text appearance for the calendar dates.
|
|||||||||||
setEnabled(boolean enabled)
设置视图的可用状态.由子类决定视图的各可用状态如何显示.
|
|||||||||||
setFirstDayOfWeek(int firstDayOfWeek)
Sets the first day of week.
|
|||||||||||
setFocusedMonthDateColor(int color)
Sets the color for the dates of the focused month.
|
|||||||||||
setMaxDate(long maxDate)
Sets the maximal date supported by this
CalendarView in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
setMinDate(long minDate)
Sets the minimal date supported by this
CalendarView in milliseconds since January 1, 1970 00:00:00 in
getDefault() time zone.
|
|||||||||||
setOnDateChangeListener(CalendarView.OnDateChangeListener listener)
Sets the listener to be notified upon selected date change.
|
|||||||||||
setSelectedDateVerticalBar(Drawable drawable)
Sets the drawable for the vertical bar shown at the beginning and at the end of the selected date.
|
|||||||||||
setSelectedDateVerticalBar(int resourceId)
Sets the drawable for the vertical bar shown at the beginning and at the end of the selected date.
|
|||||||||||
setSelectedWeekBackgroundColor(int color)
Sets the background color for the selected week.
|
|||||||||||
setShowWeekNumber(boolean showWeekNumber)
Sets whether to show the week number.
|
|||||||||||
setShownWeekCount(int count)
Sets the number of weeks to be shown.
|
|||||||||||
setUnfocusedMonthDateColor(int color)
Sets the color for the dates of a not focused month.
|
|||||||||||
setWeekDayTextAppearance(int resourceId)
Sets the text appearance for the week day abbreviation of the calendar header.
|
|||||||||||
setWeekNumberColor(int color)
Sets the color for the week numbers.
|
|||||||||||
setWeekSeparatorLineColor(int color)
Sets the color for the separator line between weeks.
|
一般常用的方法摘借(非本人翻译,感谢翻译的朋友们):
long getDate(); //获取从1970年,1月1日,0点0分0秒到现在的毫秒数,因为返回是long型最终只能截止到2038年 int getFirstDayOfWeek(); //获取当天是本周的第几天,Android123提示返回的定义在java.util.Calendar类中,比如Calendar.Monday为星期一,定义值为2。 long getMaxDate(); //获取CalendarView支持1970年到那天的最大天数 long getMinDate(); //获取CalendarView支持1970年到那天的最小天数 boolean getShowWeekNumber(); //获取是否显示星期号 boolean isEnabled(); //是否显示本日历视图 public void setDate(long date, boolean animate, boolean center); //设置选择日期到1970年的描述 void setDate(long date); //设置选择的日期描述到1970年 void setEnabled(boolean enabled); //设置是否启用视图 void setFirstDayOfWeek(int firstDayOfWeek); //设置本周起始天数 void setMaxDate(long maxDate); void setMinDate(long minDate); void setOnDateChangeListener(CalendarView.OnDateChangeListener listener); //日历视图修改的接口,这个介绍看下面。 void setShowWeekNumber(boolean showWeekNumber); //设置是否显示周号
如果有了解更多,继续补充在这里