利用WheelPicker自定义时间选择器控件

来源:互联网 发布:统计学软件spss 编辑:程序博客网 时间:2024/06/15 14:04

先上图:


使用android自带的DatePicker控件虽然也能实现功能,但样式不能改变。想要实现一些 自定义的样式,就要用到WheelPicker了。

要使用WheelPicker,需要先导入WheelPicker的引用:

1. 在project的build.gradle添加如下代码

allprojects {    repositories {        jcenter()        maven { url "https://jitpack.io" }    }}
2. 在Module的build.gradle添加依赖

compile 'com.github.open-android:WheelPicker:v1.0.0'
3.复制如下代码到xml中:

<com.itheima.wheelpicker.WheelPicker    android:id="@+id/wheel_date_picker_month"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginLeft="16dp"    app:wheel_atmospheric="true"    app:wheel_curved="true"    app:wheel_cyclic="true"    app:wheel_selected_item_position="5"    app:wheel_item_text_color="@color/text_white"    app:wheel_selected_item_text_color="@color/orange"/>
wheel_atmospheric :  条目颜色是否执行衔接处理 效果更好

wheel_curved : 是否是弧形状态显示

wheel_cyclic : 是否可循环

wheel_selected_item_position : 默认选中第几个条目


然后使用即可。

页面代码:

package com.example.castedemo.user;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.DatePicker;import com.example.castedemo.R;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import com.example.castedemo.user.bean.DayBean;import com.itheima.wheelpicker.WheelPicker;public class BirthdayActivity extends Activity {    private static final String TAG = "BirthdayActivity";    @BindView(R.id.wheel_date_picker_year)    WheelPicker wheelDatePickerYear;    @BindView(R.id.wheel_date_picker_month)    WheelPicker wheelDatePickerMonth;    @BindView(R.id.wheel_date_picker_day)    WheelPicker wheelDatePickerDay;    List<Integer> yearList = new ArrayList<Integer>();    List<Integer> monthList = new ArrayList<Integer>();    int[] dayArr = {31,28,31,30,31,30,31,31,30,31,30,31};    int[] runDayArr = {31,29,31,30,31,30,31,31,30,31,30,31};    List<DayBean> dayBeans = new ArrayList<DayBean>();    List<DayBean> runDayBeans = new ArrayList<DayBean>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_birthday);        ButterKnife.bind(this);        initWheelDate();        wheelDatePickerYear.setOnWheelChangeListener(new WheelPicker.OnWheelChangeListener() {            @Override            public void onWheelScrolled(int i) {            }            @Override            public void onWheelSelected(int i) {                updateYearValue(i+1900);            }            @Override            public void onWheelScrollStateChanged(int i) {            }        });        wheelDatePickerMonth.setOnWheelChangeListener(new WheelPicker.OnWheelChangeListener() {            @Override            public void onWheelScrolled(int i) {            }            @Override            public void onWheelSelected(int i) {                int year = wheelDatePickerYear.getCurrentItemPosition()+1900;                Log.e(TAG,"month i="+i);                updateDayValue(year,i);            }            @Override            public void onWheelScrollStateChanged(int i) {            }        });    }    public void initWheelDate() {        Calendar calendar = Calendar.getInstance();        Log.e(TAG,"calendar = "+calendar.toString());        //年        for(int i=1900;i<2018;i++){            yearList.add(i);        }        wheelDatePickerYear.setData(yearList);        //月        for(int i=0;i<12;i++){            monthList.add(i+1);        }        wheelDatePickerMonth.setData(monthList);        wheelDatePickerYear.setSelectedItemPosition(calendar.get(Calendar.YEAR));        wheelDatePickerMonth.setSelectedItemPosition(calendar.get(Calendar.MONTH));        //日        updateYearValue(wheelDatePickerYear.getCurrentItemPosition()+1900);        wheelDatePickerDay.setSelectedItemPosition(calendar.get(Calendar.DAY_OF_MONTH)-1);    }    /*    * 根据年份判断每月有几天    * */    public void updateYearValue(int year){        int month = wheelDatePickerMonth.getCurrentItemPosition();        if(isRunYear(year)){            for(int i=0;i<12;i++){                DayBean dayBean = new DayBean();                dayBean.setMonth(i+1);                List<Integer> rundayList = new ArrayList<Integer>();                for(int j=1;j<=runDayArr[i];j++){                    rundayList.add(j);                    dayBean.setDay(rundayList);                }                runDayBeans.add(dayBean);//                Log.e(TAG,"rundaybeans="+runDayBeans.get(i).getMonth()+",days="+runDayBeans.get(i).getDay().toArray());                if(month ==i){                    wheelDatePickerDay.setData(runDayBeans.get(month).getDay());                }            }        }else{            for(int i=0;i<12;i++){                DayBean dayBean = new DayBean();                dayBean.setMonth(i+1);                List<Integer> dayList = new ArrayList<Integer>();                for(int j=1;j<=dayArr[i];j++){                    dayList.add(j);                    dayBean.setDay(dayList);                }                dayBeans.add(dayBean);//                Log.e(TAG,"daybeans="+dayBeans.get(i).getMonth()+",day="+dayBeans.get(i).getDay());                if(month ==i){                    wheelDatePickerDay.setData(dayBeans.get(month).getDay());                }            }        }    }    /*    * 根据年份和月份判断该月有几天    * */    public void updateDayValue(int year,int month){        if(isRunYear(year)){            for(int i=0;i<runDayBeans.size();i++){                if(month == i){                    wheelDatePickerDay.setData(runDayBeans.get(i).getDay());                }            }        }else{            for(int i=0;i<dayBeans.size();i++){                if(month == i){                    wheelDatePickerDay.setData(dayBeans.get(i).getDay());                }            }        }    }    public boolean isRunYear(int year){        if(year%4==0 && year%100 !=0 ||year%400 ==0){            System.out.println(year +"是闰年");            return true;        } else{            System.out.println(year +"不是闰年!");            return false;        }    }}
布局文件:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_marginLeft="20dp"    android:layout_marginRight="20dp"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.castedemo.user.BirthdayActivity">    <TextView        android:text="填写生日"        android:gravity="center"        android:layout_width="match_parent"        android:layout_height="48dp" />    <View        android:layout_above="@+id/ll_birth"        android:layout_marginBottom="20dp"        android:background="@color/text_gray"        android:layout_width="match_parent"        android:layout_height="0.3dp"/>    <LinearLayout        android:id="@+id/ll_birth"        android:layout_centerInParent="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content">        <com.itheima.wheelpicker.WheelPicker            android:id="@+id/wheel_date_picker_year"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            app:wheel_atmospheric="true"            app:wheel_curved="true"            app:wheel_cyclic="true"            app:wheel_selected_item_position="5"            app:wheel_item_text_color="@color/text_white"            app:wheel_selected_item_text_color="@color/orange"/>        <TextView            android:text="年"            android:layout_marginLeft="6dp"            android:layout_gravity="center_vertical"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <com.itheima.wheelpicker.WheelPicker            android:id="@+id/wheel_date_picker_month"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="16dp"            app:wheel_atmospheric="true"            app:wheel_curved="true"            app:wheel_cyclic="true"            app:wheel_selected_item_position="5"            app:wheel_item_text_color="@color/text_white"            app:wheel_selected_item_text_color="@color/orange"/>        <TextView            android:text="月"            android:layout_marginLeft="6dp"            android:layout_gravity="center_vertical"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <com.itheima.wheelpicker.WheelPicker            android:id="@+id/wheel_date_picker_day"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            app:wheel_atmospheric="true"            android:layout_marginLeft="16dp"            app:wheel_curved="true"            app:wheel_cyclic="true"            app:wheel_selected_item_position="5"            app:wheel_item_text_color="@color/text_white"            app:wheel_selected_item_text_color="@color/orange"/>        <TextView            android:text="日"            android:layout_marginLeft="6dp"            android:layout_gravity="center_vertical"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    </LinearLayout>    <View        android:id="@+id/view_bottom"        android:layout_below="@+id/ll_birth"        android:layout_marginTop="20dp"        android:background="@color/text_gray"        android:layout_width="match_parent"        android:layout_height="0.3dp"/>    <LinearLayout        android:layout_marginTop="30dp"        android:layout_below="@+id/view_bottom"        android:gravity="center_horizontal"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <Button            android:id="@+id/btn_cancel"            android:textColor="@color/text_white"            android:background="@drawable/border_trans_style"            android:text="取消"            android:padding="5dp"            android:layout_width="60dp"            android:layout_height="wrap_content" />        <Button            android:id="@+id/btn_save"            android:background="@drawable/border_trans_style"            android:textColor="@color/text_white"            android:text="保存"            android:padding="5dp"            android:layout_marginLeft="20dp"            android:layout_width="60dp"            android:layout_height="wrap_content" />    </LinearLayout> </RelativeLayout>



原创粉丝点击