Android自带CalendarView类实现日历视图

文章由来:学习一下日历控件的实现,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();
    }
}
View Code

 

这部分代码的工作主要在于加载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>
View Code

 

实现的效果图是这样的:

 

 技术分享

 

 

以上代码就引出了使用到了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); //设置是否显示周号
View Code

 

 

如果有了解更多,继续补充在这里

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。