您好,登录后才能下订单哦!
小编给大家分享一下WheelPicker自定义时间选择器控件的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
本文实例为大家分享了WheelPicker自定义时间选择器控件的具体代码,供大家参考,具体内容如下
先上图:

使用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>
以上是“WheelPicker自定义时间选择器控件的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。