软件编程
位置:首页>> 软件编程>> Android编程>> WheelPicker自定义时间选择器控件

WheelPicker自定义时间选择器控件

作者:liuye066  发布时间:2023-05-16 18:30:05 

标签:WheelPicker,时间,选择器

本文实例为大家分享了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>

来源:https://blog.csdn.net/liuye066/article/details/78362691

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com