1. 程式人生 > >Android自定義水平日曆控制元件

Android自定義水平日曆控制元件

ZzHorizontalCalenderView

A horizontal and scrollable CalenderView.

Gradle:

compile 'me.zhouzhuo.zzhorizontalcalenderview:zz-horizontal-calenderview:1.0.0'

Maven:

<dependency>
  <groupId>me.zhouzhuo.zzhorizontalcalenderview</groupId>
  <artifactId>zz-horizontal-calenderview</artifactId
>
<version>1.0.0</version> <type>pom</type> </dependency>

功能簡介:

1.支援年、月、日、星期的文字顏色配置;
2.支援日的選中顏色配置;
3.支援年月對話方塊選擇;
4.支援年和月點選回撥;
5.支援年月日星期點選回撥;
6.支援選中自動滑動到中間;
7.支援今天小圓點標註;
8.支援今天小圓點顏色配置;
9.所有配置均支援xml屬性配置或java程式碼動態設定;

效果圖如下:

demo

屬性

    <declare-styleable name
="ZzHorizontalCalenderView">
<attr name="zhc_show_pick_dialog" format="boolean" /> <attr name="zhc_unit_color" format="color|reference" /> <attr name="zhc_selection_color" format="color|reference" /> <attr name="zhc_press_shape_selector" format="reference"
/>
<attr name="zhc_year_text_color" format="color|reference" /> <attr name="zhc_month_text_color" format="color|reference" /> <attr name="zhc_week_text_color" format="color|reference" /> <attr name="zhc_day_selected_text_color" format="color|reference" /> <attr name="zhc_day_unselected_text_color" format="color|reference" /> <attr name="zhc_today_point_color" format="color|reference" /> </declare-styleable>

屬性說明:

屬性名稱 屬性作用 屬性型別
zhc_show_pick_dialog 點選年或月是否彈出日期選擇對話方塊 boolean
zhc_unit_color 年月單位的顏色 color
zhc_selection_color 日的選中顏色 color
zhc_press_shape_selector 年或月或日點選效果選擇器 selector
zhc_year_text_color 年的顏色 color
zhc_month_text_color 月的顏色 color
zhc_week_text_color 星期的顏色 color
zhc_day_selected_text_color 日選中時文字顏色 color
zhc_day_unselected_text_color 日未選中時文字顏色 color
zhc_today_point_color 今天的下表點的顏色 color

用法簡介:

① xml 程式碼

    <me.zhouzhuo.zzhorizontalcalenderview.ZzHorizontalCalenderView
        android:id="@+id/zz_horizontal_calender_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:zhc_day_selected_text_color="@android:color/white"/>

②java 程式碼

 final ZzHorizontalCalenderView view = (ZzHorizontalCalenderView) findViewById(R.id.zz_horizontal_calender_view);
    //日點選監聽
    view.setOnDaySelectedListener(new ZzHorizontalCalenderView.OnDaySelectedListener() {
        @Override
        public void onSelected(boolean hasChanged, int year, int month, int day, int week) {
            tvResult.setText("日期是否有變化:" + hasChanged + ",\n\n日期:" + year + "-" + month + "-" + day + ",\n\n星期:" + week);
        }
    });

    //動態設定各種屬性值:
    view.setShowPickDialog(true);
    view.setUnitColorResId(android.R.color.holo_green_dark);
    view.setDayTextColorSelectedResId(android.R.color.holo_blue_bright);
    view.setDayTextColorNormalResId(android.R.color.holo_red_dark);
    view.setDaySelectionColorResId(android.R.color.holo_orange_dark);
    view.setTodayPointColor(Color.YELLOW);
    view.setMonthTextColor(Color.RED);
    view.setYearTextColor(Color.BLUE);

    //年月點選監聽
    view.setOnYearMonthClickListener(new ZzHorizontalCalenderView.OnYearMonthClickListener() {
        @Override
        public void onYearClick(int selectedYear, int selectedMonth) {
            tvResult.setText("點選了年:("+selectedYear+","+selectedMonth+")");
        }

        @Override
        public void onMonthClick(int selectedYear, int selectedMonth) {
            tvResult.setText("點選了月 :("+selectedYear+","+selectedMonth+")");
        }
    });