ソースを参照

添加时间段选择器

yanyi 7 年 前
コミット
e31bfd5e50

+ 6 - 0
.idea/smartfox_info.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SmartFoxProjectConfig">
+    <option name="projectInspectionClosed" value="true" />
+  </component>
+</project>

+ 7 - 1
README.md

@@ -5,7 +5,7 @@
 
 #### module 下添加
 
-     compile 'com.github.BenYanYi:DateSelect:1.0.1'
+     compile 'com.github.BenYanYi:DateSelect:1.0.2'
 
  #### project 下添加
 
@@ -21,11 +21,17 @@
 ### 1.0.2版本
     SelectData selectData = new SelectData(this,selectType);
     
+    其余与1.0.1版本一样
+    
     SelectType 表示需要隐藏的段落
+    
     /**
      * 不隐藏,隐藏时,隐藏分
      */
      NONE, HOUR, MIN  
+     
+     添加SelectPeriod(时间段选择,结束时间需大于开始时间,且不能大于当前时间)
+     用法和时间选择器一样(SelectData)
     
 ### 1.0.1版本
 ##### 带时间的选择器

+ 2 - 1
app/build.gradle

@@ -19,9 +19,10 @@ android {
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
     implementation 'com.android.support:appcompat-v7:26.1.0'
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'com.android.support.test:runner:1.0.1'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+    implementation project(':datelib')
 }

+ 8 - 1
app/src/main/AndroidManifest.xml

@@ -7,5 +7,12 @@
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        android:theme="@style/AppTheme" />
+        android:theme="@style/AppTheme">
+        <activity android:name=".MainActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
 </manifest>

+ 59 - 0
app/src/main/java/com/yanyi/dateselect/MainActivity.java

@@ -0,0 +1,59 @@
+package com.yanyi.dateselect;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+
+import com.yanyi.datelib.SelectPeriod;
+import com.yanyi.datelib.config.SelectType;
+
+/**
+ * @author Administrator
+ * @date 2018/5/19 16:38
+ * @e-mail love@yanyi.red
+ * @overview
+ */
+public class MainActivity extends AppCompatActivity {
+    private Context mContext;
+    private String TAG = "MainActivity";
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.act_main);
+        mContext = this;
+        findViewById(R.id.but).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+//                SelectData selectData = new SelectData(mContext, SelectType.MIN);
+//                selectData.showAtLocation(view, Gravity.BOTTOM, 0, 0);
+//                selectData.setDateClickListener(new SelectData.OnDateClickListener() {
+//                    @Override
+//                    public void onClick(String year, String month, String day, String hour, String minute) {
+//                        Log.v("sss", year + "-" + month + "-" + day + " " + hour + ":" + minute);
+//                    }
+//                });
+                select(view);
+            }
+        });
+    }
+
+    private void select(View view) {
+        SelectPeriod selectPeriod = new SelectPeriod(mContext, SelectType.NONE);
+        selectPeriod.showAtLocation(view, Gravity.CENTER, 0, 0);
+        selectPeriod.setOnDateClickListener(new SelectPeriod.OnDateClickListener() {
+            @Override
+            public void onDateClickListener(String startTime, String endTime) {
+                log(startTime + "\t" + endTime);
+            }
+        });
+    }
+
+    private void log(Object log) {
+        Log.v(TAG, log.toString());
+    }
+}

+ 12 - 0
app/src/main/res/layout/act_main.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <Button
+        android:id="@+id/but"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="点击" />
+</LinearLayout>

+ 18 - 4
datelib/src/main/java/com/yanyi/datelib/SelectData.java

@@ -52,6 +52,7 @@ public class SelectData extends PopupWindow implements View.OnClickListener {
     private DateTextAdapter hourAdapter;
     private DateTextAdapter minuteAdapter;
 
+    private SelectType selectType;
     private String strYear;
     private String strMonth;
     private String strDay;
@@ -70,6 +71,7 @@ public class SelectData extends PopupWindow implements View.OnClickListener {
     public SelectData(final Context context, SelectType selectType) {
         super(context);
         this.context = context;
+        this.selectType = selectType;
         View view = View.inflate(context, R.layout.select_date_pop_layout, null);
 
         wvYear = (WheelView) view.findViewById(R.id.wv_date_year);
@@ -385,7 +387,7 @@ public class SelectData extends PopupWindow implements View.OnClickListener {
      * @author Administrator
      */
     public interface OnDateClickListener {
-        public void onClick(String year, String month, String day, String hour, String minute);
+        void onClick(String year, String month, String day, String hour, String minute);
     }
 
     /**
@@ -419,9 +421,21 @@ public class SelectData extends PopupWindow implements View.OnClickListener {
         strYear = String.valueOf(year);
         strMonth = (month < 10 ? "0" : "") + String.valueOf(month);
         strDay = (day < 10 ? "0" : "") + String.valueOf(day);
-        strHour = (hour < 10 ? "0" : "") + String.valueOf(hour);
-        strMinute = (minute < 10 ? "0" : "") + String.valueOf(minute);
-
+        switch (selectType) {
+            case NONE:
+            default:
+                strHour = (hour < 10 ? "0" : "") + String.valueOf(hour);
+                strMinute = (minute < 10 ? "0" : "") + String.valueOf(minute);
+                break;
+            case HOUR:
+                strHour = "00";
+                strMinute = "00";
+                break;
+            case MIN:
+                strHour = (hour < 10 ? "0" : "") + String.valueOf(hour);
+                strMinute = "00";
+                break;
+        }
         mYearDatas = new String[150];
         //int year = calendar.get(Calendar.YEAR);
         for (int i = year - 100, j = 0; i < year + 50; i++, j++) {

+ 811 - 0
datelib/src/main/java/com/yanyi/datelib/SelectPeriod.java

@@ -0,0 +1,811 @@
+package com.yanyi.datelib;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.drawable.ColorDrawable;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.yanyi.datelib.config.SelectType;
+import com.yanyi.datelib.wheelview.AbstractWheelTextAdapter1;
+import com.yanyi.datelib.wheelview.OnWheelChangedListener;
+import com.yanyi.datelib.wheelview.OnWheelScrollListener;
+import com.yanyi.datelib.wheelview.WheelView;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * @author Administrator
+ * @date 2018/5/19 17:24
+ * @email ben@yanyi.red
+ * @overview
+ */
+public class SelectPeriod extends PopupWindow implements View.OnClickListener {
+    private String TAG = "SelectPeriod";
+    private Context mContext;
+    private SelectType selectType;
+
+    private View mView;
+
+    private TextView butCancel;//取消按钮
+    private TextView butSend;//确定按钮
+    private LinearLayout timeLinear;
+
+    private LinearLayout startTimeLinear;
+    private TextView startTimeTv;
+    private LinearLayout endTimeLinear;
+    private TextView endTimeTv;
+
+    private LinearLayout startLinear;
+    private WheelView startYearWv;
+    private WheelView startMonthWv;
+    private WheelView startDayWv;
+    private LinearLayout startHourLinear;
+    private WheelView startHourWv;
+    private LinearLayout startMinuteLinear;
+    private WheelView startMinuteWv;
+
+    private LinearLayout endLinear;
+    private WheelView endYearWv;
+    private WheelView endMonthWv;
+    private WheelView endDayWv;
+    private LinearLayout endHourLinear;
+    private WheelView endHourWv;
+    private LinearLayout endMinuteLinear;
+    private WheelView endMinuteWv;
+
+    private String[] startYearData, startMonthData, startDayData, startHourData, startMinuteData;
+    private String[] endYearData, endMonthData, endDayData, endHourData, endMinuteData;
+
+    private Calendar calendar = Calendar.getInstance();
+
+    private DateTextAdapter startYearAdapter;
+    private DateTextAdapter startMonthAdapter;
+    private DateTextAdapter startDayAdapter;
+    private DateTextAdapter startHourAdapter;
+    private DateTextAdapter startMinuteAdapter;
+
+    private DateTextAdapter endYearAdapter;
+    private DateTextAdapter endMonthAdapter;
+    private DateTextAdapter endDayAdapter;
+    private DateTextAdapter endHourAdapter;
+    private DateTextAdapter endMinuteAdapter;
+
+    private String startYear;
+    private String startMonth;
+    private String startDay;
+    private String startHour;
+    private String startMinute;
+
+    private String endYear;
+    private String endMonth;
+    private String endDay;
+    private String endHour;
+    private String endMinute;
+
+    private int maxSize = 14;
+    private int minSize = 12;
+
+    private OnDateClickListener onDateClickListener;
+
+    public SelectPeriod(Context context) {
+        this(context, SelectType.NONE);
+    }
+
+    public SelectPeriod(Context context, SelectType selectType) {
+        super(context);
+        this.mContext = context;
+        this.selectType = selectType;
+        mView = View.inflate(context, R.layout.select_period_pop_layout, null);
+        init();
+        //设置SelectPicPopupWindow的View
+        this.setContentView(mView);
+        //设置SelectPicPopupWindow弹出窗体的宽
+        this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
+        //设置SelectPicPopupWindow弹出窗体的高
+        this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
+        //设置SelectPicPopupWindow弹出窗体可点击
+        this.setFocusable(true);
+        //设置SelectPicPopupWindow弹出窗体动画效果
+//		this.setAnimationStyle(R.style.AnimBottom);
+        //实例化一个ColorDrawable颜色为半透明
+        ColorDrawable dw = new ColorDrawable(0xb0000000);
+        //设置SelectPicPopupWindow弹出窗体的背景
+        this.setBackgroundDrawable(dw);
+
+        initData();
+
+        initStartWv();
+
+        initEndWv();
+
+    }
+
+    private void init() {
+        butCancel = $(R.id.but_cancel);
+        butCancel.setOnClickListener(this);
+        butSend = $(R.id.but_send);
+        butSend.setOnClickListener(this);
+        timeLinear = $(R.id.time_linear);
+        timeLinear.setBackgroundResource(R.mipmap.begin_time_bg);
+        startTimeLinear = $(R.id.start_time_linear);
+        startTimeTv = $(R.id.start_time);
+        startTimeLinear.setOnClickListener(this);
+        endTimeLinear = $(R.id.end_time_linear);
+        endTimeTv = $(R.id.end_time);
+        endTimeLinear.setOnClickListener(this);
+
+        startLinear = $(R.id.start_linear);
+        startYearWv = $(R.id.start_year);
+        startMonthWv = $(R.id.start_month);
+        startDayWv = $(R.id.start_day);
+        startHourLinear = $(R.id.start_hour_linear);
+        startHourWv = $(R.id.start_hour);
+        startMinuteLinear = $(R.id.start_minute_linear);
+        startMinuteWv = $(R.id.start_minute);
+        startLinear.setVisibility(View.VISIBLE);
+
+        endLinear = $(R.id.end_linear);
+        endYearWv = $(R.id.end_year);
+        endMonthWv = $(R.id.end_month);
+        endDayWv = $(R.id.end_day);
+        endHourLinear = $(R.id.end_hour_linear);
+        endHourWv = $(R.id.end_hour);
+        endMinuteLinear = $(R.id.end_minute_linear);
+        endMinuteWv = $(R.id.end_minute);
+        endLinear.setVisibility(View.GONE);
+
+        switch (selectType) {
+            case HOUR:
+                startHourLinear.setVisibility(View.GONE);
+                endHourLinear.setVisibility(View.GONE);
+            case MIN:
+                startMinuteLinear.setVisibility(View.GONE);
+                endMinuteLinear.setVisibility(View.GONE);
+                break;
+            case NONE:
+            default:
+                startHourLinear.setVisibility(View.VISIBLE);
+                endHourLinear.setVisibility(View.VISIBLE);
+                startMinuteLinear.setVisibility(View.VISIBLE);
+                endMinuteLinear.setVisibility(View.VISIBLE);
+                break;
+        }
+    }
+
+    private void initData() {
+        int year, month, day, hour, minute;
+        year = calendar.get(Calendar.YEAR);
+        month = calendar.get(Calendar.MONTH) + 1;
+        day = calendar.get(Calendar.DATE);
+        hour = calendar.get(Calendar.HOUR_OF_DAY);
+        minute = calendar.get(Calendar.MINUTE);
+        String strYear = String.valueOf(year);
+        String strMonth = (month < 10 ? "0" : "") + String.valueOf(month);
+        String strDay = (day < 10 ? "0" : "") + String.valueOf(day);
+        startYear = strYear;
+        endYear = strYear;
+        startMonth = strMonth;
+        endMonth = strMonth;
+        startDay = strDay;
+        endDay = strDay;
+
+        String strHour;
+        String strMinute;
+
+        switch (selectType) {
+            case NONE:
+            default:
+                strHour = (hour < 10 ? "0" : "") + String.valueOf(hour);
+                strMinute = (minute < 10 ? "0" : "") + String.valueOf(minute);
+                break;
+            case HOUR:
+                strHour = "00";
+                strMinute = "00";
+                break;
+            case MIN:
+                strHour = (hour < 10 ? "0" : "") + String.valueOf(hour);
+                strMinute = "00";
+                break;
+        }
+        startHour = strHour;
+        startMinute = strMinute;
+        endHour = strHour;
+        endMinute = strMinute;
+
+        startYearData = new String[150];
+        endYearData = new String[150];
+        //int year = calendar.get(Calendar.YEAR);
+        for (int i = year - 100, j = 0; i < year + 50; i++, j++) {
+            startYearData[j] = i + "";
+            endYearData[j] = i + "";
+        }
+
+        startMonthData = new String[12];
+        endMonthData = new String[12];
+        for (int i = 0; i < 12; i++) {
+            if (i < 9) {
+                startMonthData[i] = "0" + (i + 1) + "";
+                endMonthData[i] = "0" + (i + 1) + "";
+            } else {
+                startMonthData[i] = i + 1 + "";
+                endMonthData[i] = i + 1 + "";
+            }
+        }
+
+        int count = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+        //Log.e(TAG, "initDatas: "+ strYear+":"+strMonth+":"+strDay+":"+count);
+
+        startDayData = new String[count];
+        endDayData = new String[count];
+        for (int i = 0; i < count; i++) {
+            if (i < 9) {
+                startDayData[i] = "0" + (i + 1);
+                endDayData[i] = "0" + (i + 1);
+            } else {
+                startDayData[i] = i + 1 + "";
+                endDayData[i] = i + 1 + "";
+            }
+        }
+
+        startHourData = new String[24];
+        endHourData = new String[24];
+        for (int i = 0; i < 24; i++) {
+            if (i < 10) {
+                startHourData[i] = "0" + i;
+                endHourData[i] = "0" + i;
+            } else {
+                startHourData[i] = i + "";
+                endHourData[i] = i + "";
+            }
+        }
+
+        startMinuteData = new String[60];
+        endMinuteData = new String[60];
+        for (int i = 0; i < 60; i++) {
+            if (i < 10) {
+                startMinuteData[i] = "0" + i;
+                endMinuteData[i] = "0" + i;
+            } else {
+                startMinuteData[i] = i + "";
+                endMinuteData[i] = i + "";
+            }
+        }
+        startTimeTv.setText(getStartTimeStr());
+        endTimeTv.setText(getEndTimeStr());
+    }
+
+    private void initStartWv() {
+        startYearAdapter = new DateTextAdapter(mContext, startYearData, Integer.parseInt(startYear) - calendar.get(Calendar.YEAR) + 100,
+                maxSize, minSize);
+        startYearWv.setVisibleItems(5);
+        startYearWv.setViewAdapter(startYearAdapter);
+        startYearWv.setCurrentItem(Integer.parseInt(startYear) - calendar.get(Calendar.YEAR) + 100);
+
+        startMonthAdapter = new DateTextAdapter(mContext, startMonthData, Integer.parseInt(startMonth) - 1, maxSize, minSize);
+        startMonthWv.setVisibleItems(5);
+        startMonthWv.setViewAdapter(startMonthAdapter);
+        startMonthWv.setCurrentItem(Integer.parseInt(startMonth) - 1);
+
+        startDayAdapter = new DateTextAdapter(mContext, startDayData, Integer.parseInt(startDay) - 1, maxSize, minSize);
+        startDayWv.setVisibleItems(5);
+        startDayWv.setViewAdapter(startDayAdapter);
+        startDayWv.setCurrentItem(Integer.parseInt(startDay) - 1);
+
+        startHourAdapter = new DateTextAdapter(mContext, startHourData, Integer.parseInt(startHour), maxSize, minSize);
+        startHourWv.setVisibleItems(5);
+        startHourWv.setViewAdapter(startHourAdapter);
+        startHourWv.setCurrentItem(Integer.parseInt(startHour));
+
+        startMinuteAdapter = new DateTextAdapter(mContext, startMinuteData, Integer.parseInt(startMinute), maxSize, minSize);
+        startMinuteWv.setVisibleItems(5);
+        startMinuteWv.setViewAdapter(startMinuteAdapter);
+        startMinuteWv.setCurrentItem(Integer.parseInt(startMinute));
+
+        startYearWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) startYearAdapter.getItemText(wheel.getCurrentItem());
+                startYear = currentText;
+                setTextViewSize(currentText, startYearAdapter);
+
+
+                startDayData = getDays(Integer.parseInt(startYear), Integer.parseInt(startMonth));
+                startDayAdapter = new DateTextAdapter(mContext, startDayData, 0, maxSize, minSize);
+                startDayWv.setVisibleItems(5);
+                startDayWv.setViewAdapter(startDayAdapter);
+                startDayWv.setCurrentItem(0);
+                setTextViewSize("0", startDayAdapter);
+
+                startTimeTv.setText(getStartTimeStr());
+            }
+        });
+
+        startYearWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) startYearAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, startYearAdapter);
+
+            }
+        });
+
+        startMonthWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) startMonthAdapter.getItemText(wheel.getCurrentItem());
+                startMonth = currentText;
+                setTextViewSize(currentText, startMonthAdapter);
+
+                startDayData = getDays(Integer.parseInt(startYear), Integer.parseInt(startMonth));
+                startDayAdapter = new DateTextAdapter(mContext, startDayData, 0, maxSize, minSize);
+                startDayWv.setVisibleItems(5);
+                startDayWv.setViewAdapter(startDayAdapter);
+                startDayWv.setCurrentItem(0);
+                setTextViewSize("0", startDayAdapter);
+
+                startTimeTv.setText(getStartTimeStr());
+            }
+        });
+
+        startMonthWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) startMonthAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, startMonthAdapter);
+            }
+        });
+
+        startDayWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) startDayAdapter.getItemText(wheel.getCurrentItem());
+                startDay = currentText;
+                setTextViewSize(currentText, startDayAdapter);
+
+                startTimeTv.setText(getStartTimeStr());
+            }
+        });
+
+        startDayWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) startDayAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, startDayAdapter);
+            }
+        });
+
+        startHourWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) startHourAdapter.getItemText(wheel.getCurrentItem());
+//                startMinute = currentText;
+                startHour = currentText;
+                setTextViewSize(currentText, startHourAdapter);
+
+                startTimeTv.setText(getStartTimeStr());
+            }
+        });
+
+        startHourWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) startHourAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, startHourAdapter);
+            }
+        });
+        startMinuteWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) startMinuteAdapter.getItemText(wheel.getCurrentItem());
+                startMinute = currentText;
+                setTextViewSize(currentText, startMinuteAdapter);
+
+                startTimeTv.setText(getStartTimeStr());
+            }
+        });
+
+        startMinuteWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) startMinuteAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, startMinuteAdapter);
+            }
+        });
+    }
+
+    private void initEndWv() {
+        endYearAdapter = new DateTextAdapter(mContext, endYearData, Integer.parseInt(endYear) - calendar.get(Calendar.YEAR) + 100,
+                maxSize, minSize);
+        endYearWv.setVisibleItems(5);
+        endYearWv.setViewAdapter(endYearAdapter);
+        endYearWv.setCurrentItem(Integer.parseInt(endYear) - calendar.get(Calendar.YEAR) + 100);
+
+        endMonthAdapter = new DateTextAdapter(mContext, endMonthData, Integer.parseInt(endMonth) - 1, maxSize, minSize);
+        endMonthWv.setVisibleItems(5);
+        endMonthWv.setViewAdapter(endMonthAdapter);
+        endMonthWv.setCurrentItem(Integer.parseInt(endMonth) - 1);
+
+        endDayAdapter = new DateTextAdapter(mContext, endDayData, Integer.parseInt(endDay) - 1, maxSize, minSize);
+        endDayWv.setVisibleItems(5);
+        endDayWv.setViewAdapter(endDayAdapter);
+        endDayWv.setCurrentItem(Integer.parseInt(endDay) - 1);
+
+        endHourAdapter = new DateTextAdapter(mContext, endHourData, Integer.parseInt(endHour), maxSize, minSize);
+        endHourWv.setVisibleItems(5);
+        endHourWv.setViewAdapter(endHourAdapter);
+        endHourWv.setCurrentItem(Integer.parseInt(endHour));
+
+        endMinuteAdapter = new DateTextAdapter(mContext, endMinuteData, Integer.parseInt(endMinute), maxSize, minSize);
+        endMinuteWv.setVisibleItems(5);
+        endMinuteWv.setViewAdapter(endMinuteAdapter);
+        endMinuteWv.setCurrentItem(Integer.parseInt(endMinute));
+
+        endYearWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) endYearAdapter.getItemText(wheel.getCurrentItem());
+                endYear = currentText;
+                setTextViewSize(currentText, endYearAdapter);
+
+
+                endDayData = getDays(Integer.parseInt(endYear), Integer.parseInt(endMonth));
+                endDayAdapter = new DateTextAdapter(mContext, endDayData, 0, maxSize, minSize);
+                endDayWv.setVisibleItems(5);
+                endDayWv.setViewAdapter(endDayAdapter);
+                endDayWv.setCurrentItem(0);
+                setTextViewSize("0", endDayAdapter);
+
+                endTimeTv.setText(getEndTimeStr());
+            }
+        });
+
+        endYearWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) endYearAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, endYearAdapter);
+            }
+        });
+
+        endMonthWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) endMonthAdapter.getItemText(wheel.getCurrentItem());
+                endMonth = currentText;
+                setTextViewSize(currentText, endMonthAdapter);
+
+                endDayData = getDays(Integer.parseInt(endYear), Integer.parseInt(endMonth));
+                endDayAdapter = new DateTextAdapter(mContext, endDayData, 0, maxSize, minSize);
+                endDayWv.setVisibleItems(5);
+                endDayWv.setViewAdapter(endDayAdapter);
+                endDayWv.setCurrentItem(0);
+                setTextViewSize("0", endDayAdapter);
+
+                endTimeTv.setText(getEndTimeStr());
+            }
+        });
+
+        endMonthWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) endMonthAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, endMonthAdapter);
+            }
+        });
+
+        endDayWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) endDayAdapter.getItemText(wheel.getCurrentItem());
+                endDay = currentText;
+                setTextViewSize(currentText, endDayAdapter);
+
+                endTimeTv.setText(getEndTimeStr());
+            }
+        });
+
+        endDayWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) endDayAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, endDayAdapter);
+            }
+        });
+
+        endHourWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) endHourAdapter.getItemText(wheel.getCurrentItem());
+//                startMinute = currentText;
+                endHour = currentText;
+                setTextViewSize(currentText, endHourAdapter);
+
+                endTimeTv.setText(getEndTimeStr());
+            }
+        });
+
+        endHourWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) endHourAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, endHourAdapter);
+            }
+        });
+        endMinuteWv.addChangingListener(new OnWheelChangedListener() {
+            @Override
+            public void onChanged(WheelView wheel, int oldValue, int newValue) {
+                String currentText = (String) endMinuteAdapter.getItemText(wheel.getCurrentItem());
+                endMinute = currentText;
+                setTextViewSize(currentText, endMinuteAdapter);
+
+                endTimeTv.setText(getEndTimeStr());
+            }
+        });
+
+        endMinuteWv.addScrollingListener(new OnWheelScrollListener() {
+            @Override
+            public void onScrollingStarted(WheelView wheel) {
+            }
+
+            @Override
+            public void onScrollingFinished(WheelView wheel) {
+                String currentText = (String) endMinuteAdapter.getItemText(wheel.getCurrentItem());
+                setTextViewSize(currentText, endMinuteAdapter);
+            }
+        });
+    }
+
+    @Override
+    public void onClick(View view) {
+        if (view == butSend) {
+            log("send");
+            if (null != onDateClickListener) {
+                String startTimeStr = getStartTimeStr();
+                String endTimeStr = getEndTimeStr();
+                log(getStringDate());
+                if (TimeComparison(endTimeStr, getStringDate())) {
+                    if (TimeComparison(startTimeStr, endTimeStr)) {
+                        log(startTimeStr + "\t" + endTimeStr);
+                        onDateClickListener.onDateClickListener(startTimeStr, endTimeStr);
+                        dismiss();
+                    } else {
+                        log("结束时间需要大于开始时间");
+                        Toast.makeText(mContext, "结束时间需要大于开始时间", Toast.LENGTH_SHORT).show();
+                    }
+                } else {
+                    log("结束时间需要大于开始时间");
+                    Toast.makeText(mContext, "结束时间不能超过当前时间", Toast.LENGTH_SHORT).show();
+                }
+            }
+        } else if (view == butCancel) {
+            log("cancel");
+            dismiss();
+        } else if (view == startTimeLinear) {
+            timeLinear.setBackgroundResource(R.mipmap.begin_time_bg);
+            startLinear.setVisibility(View.VISIBLE);
+            endLinear.setVisibility(View.GONE);
+        } else if (view == endTimeLinear) {
+            timeLinear.setBackgroundResource(R.mipmap.end_time_bg);
+            startLinear.setVisibility(View.GONE);
+            endLinear.setVisibility(View.VISIBLE);
+        }
+    }
+
+    private String getStartTimeStr() {
+        String startTimeStr = "";
+        switch (selectType) {
+            case HOUR:
+                startTimeStr = startYear + "-" + startMonth + "-" + startDay;
+                break;
+            case MIN:
+                startTimeStr = startYear + "-" + startMonth + "-" + startDay + " " + startHour;
+                break;
+            case NONE:
+            default:
+                startTimeStr = startYear + "-" + startMonth + "-" + startDay + " " + startHour + ":" + startMinute;
+                break;
+        }
+        return startTimeStr;
+    }
+
+    private String getEndTimeStr() {
+        String endTimeStr = "";
+        switch (selectType) {
+            case HOUR:
+                endTimeStr = endYear + "-" + endMonth + "-" + endDay;
+                break;
+            case MIN:
+                endTimeStr = endYear + "-" + endMonth + "-" + endDay + " " + endHour;
+                break;
+            case NONE:
+            default:
+                endTimeStr = endYear + "-" + endMonth + "-" + endDay + " " + endHour + ":" + endMinute;
+                break;
+        }
+        return endTimeStr;
+    }
+
+    private <T extends View> T $(int id) {
+        return mView.findViewById(id);
+    }
+
+    /**
+     * 得到当前的时间
+     *
+     * @return 例如:2015-01-06 22:56
+     */
+    @SuppressLint("SimpleDateFormat")
+    private String getStringDate() {
+        Date currentTime = new Date();
+        SimpleDateFormat formatter;
+        switch (selectType) {
+            case HOUR:
+                formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+                break;
+            case MIN:
+                formatter = new SimpleDateFormat("yyyy-MM-dd HH", Locale.CHINA);
+                break;
+            case NONE:
+            default:
+                formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
+                break;
+        }
+        return formatter.format(currentTime);
+    }
+
+    /**
+     * 结束日期是否大于开始日期
+     *
+     * @param startTime 开始时间
+     * @param endTime   结束时间
+     * @return true 表示为真
+     */
+    @SuppressLint("SimpleDateFormat")
+    private boolean TimeComparison(String startTime, String endTime) {
+        boolean mAfter = true;
+        try {
+            @SuppressLint("SimpleDateFormat")
+            SimpleDateFormat formatter;
+            switch (selectType) {
+                case HOUR:
+                    formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
+                    break;
+                case MIN:
+                    formatter = new SimpleDateFormat("yyyy-MM-dd HH", Locale.CHINA);
+                    break;
+                case NONE:
+                default:
+                    formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
+                    break;
+            }
+            // 获得两个时间的毫秒时间差异
+            Date start = formatter.parse(startTime);
+            Date end = formatter.parse(endTime);
+            if (start.getTime() > end.getTime()) {
+                mAfter = false;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return mAfter;
+    }
+
+    private class DateTextAdapter extends AbstractWheelTextAdapter1 {
+        String[] list;
+
+        protected DateTextAdapter(Context context, String[] list, int currentItem, int maxsize, int minsize) {
+            super(context, R.layout.item_date, NO_RESOURCE, currentItem, maxsize, minsize);
+            this.list = list;
+            setItemTextResource(R.id.tempValue);
+        }
+
+        @Override
+        public int getItemsCount() {
+            return list.length;
+        }
+
+        @Override
+        protected CharSequence getItemText(int index) {
+            return list[index];
+        }
+    }
+
+    /**
+     * 设置字体大小
+     *
+     * @param currieItemText
+     * @param adapter
+     */
+    private void setTextViewSize(String currieItemText, DateTextAdapter adapter) {
+        ArrayList<View> arrayList = adapter.getTestViews();
+        int size = arrayList.size();
+        String currentText;
+        for (int i = 0; i < size; i++) {
+            TextView textView = (TextView) arrayList.get(i);
+            currentText = textView.getText().toString();
+            if (currieItemText.equals(currentText)) {
+                textView.setTextSize(14);
+            } else {
+                textView.setTextSize(12);
+            }
+        }
+    }
+
+    private String[] getDays(int year, int month) {
+        String[] datas;
+        Calendar newCal = Calendar.getInstance();
+        // newCal.s
+        newCal.set(Calendar.YEAR, year);
+        newCal.set(Calendar.MONTH, month - 1);
+        int count = newCal.getActualMaximum(Calendar.DAY_OF_MONTH);//new Date(year,month,0).getDate();
+
+        Log.e(TAG, "getDays: " + year + ":" + month + ":" + count);
+        datas = new String[count];
+        for (int i = 0; i < count; i++) {
+            if (i < 9) {
+                datas[i] = "0" + (i + 1);
+            } else {
+                datas[i] = i + 1 + "";
+            }
+        }
+        return datas;
+    }
+
+    private void log(Object obj) {
+        Log.v(TAG, obj.toString());
+    }
+
+    public void setOnDateClickListener(OnDateClickListener onDateClickListener) {
+        this.onDateClickListener = onDateClickListener;
+    }
+
+    public interface OnDateClickListener {
+        void onDateClickListener(String startTime, String endTime);
+    }
+}

+ 378 - 0
datelib/src/main/res/layout/select_period_pop_layout.xml

@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/select_date"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="#00000000"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/select_date_child"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="#ffffff"
+        android:orientation="vertical">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="44dp">
+
+            <TextView
+                android:id="@+id/but_cancel"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_alignParentLeft="true"
+                android:layout_marginRight="15dip"
+                android:gravity="center"
+                android:paddingLeft="12dp"
+                android:text="取消"
+                android:textColor="#e84515"
+                android:textSize="13sp" />
+
+
+            <TextView
+                android:id="@+id/but_send"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_alignParentRight="true"
+                android:gravity="center"
+                android:paddingRight="12dp"
+                android:text="完成"
+                android:textColor="#e84515"
+                android:textSize="12sp" />
+
+        </RelativeLayout>
+
+        <LinearLayout
+            android:id="@+id/time_linear"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:background="@mipmap/begin_time_bg"
+            android:orientation="horizontal">
+
+            <LinearLayout
+                android:id="@+id/start_time_linear"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:orientation="vertical">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="开始于"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:id="@+id/start_time"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="2018-05-19 18:18"
+                    android:textColor="#000000"
+                    android:textSize="15sp" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/end_time_linear"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center"
+                android:orientation="vertical">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="结束于"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:id="@+id/end_time"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="2018-05-19 18:18"
+                    android:textColor="#000000"
+                    android:textSize="15sp" />
+            </LinearLayout>
+        </LinearLayout>
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <LinearLayout
+                android:id="@+id/start_linear"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="年"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/start_year"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="月"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/start_month"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="日"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/start_day"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:id="@+id/start_hour_linear"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="时"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/start_hour"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:id="@+id/start_minute_linear"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="分"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/start_minute"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+                </LinearLayout>
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/end_linear"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:visibility="gone">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
+
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="年"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/end_year"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="月"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/end_month"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="日"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/end_day"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:id="@+id/end_hour_linear"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="时"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/end_hour"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:id="@+id/end_minute_linear"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <TextView
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:gravity="center"
+                            android:paddingBottom="10dp"
+                            android:paddingTop="10dp"
+                            android:text="分"
+                            android:textColor="@android:color/black" />
+
+                        <com.yanyi.datelib.wheelview.WheelView
+                            android:id="@+id/end_minute"
+                            android:layout_width="match_parent"
+                            android:layout_height="160dp"
+                            android:layout_gravity="center_vertical"
+                            android:layout_weight="1" />
+                    </LinearLayout>
+                </LinearLayout>
+            </LinearLayout>
+        </RelativeLayout>
+    </LinearLayout>
+</LinearLayout>

BIN
datelib/src/main/res/mipmap-xxxhdpi/begin_time_bg.png


BIN
datelib/src/main/res/mipmap-xxxhdpi/end_time_bg.png