利用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>
阅读全文
0 0
- 利用WheelPicker自定义时间选择器控件
- 安卓仿IOS日期或时间选择器WheelPicker
- 时间选择器控件学习
- layui时间控件选择器
- 自定义日期时间选择器
- NumberPicker自定义时间选择器
- Android 自定义时间选择器
- 自定义时间选择器
- android自定义时间选择器
- Android自定义时间选择器
- 自定义时间选择器DatePicker
- 自定义时间选择器
- 自定义时间选择器
- 自定义时间选择器
- 自定义日期时间选择器
- Android自定义时间选择器
- 自定义时间选择器
- 自定义时间选择器RZDatePickerView
- 实习生面试经验累计
- 云存储:对象存储管理与安全
- 了解Minimax算法
- 【Java】阿里巴巴java规范插件安装记录
- 前台页面弹出div,背景变灰
- 利用WheelPicker自定义时间选择器控件
- Sqoop的安装与数据的导入导出
- 分别用原生JS与jQuery 写简单选项卡
- 实时监控、直播流、流媒体、视频网站开发方案设计简要
- CentOS-6.9 二进制安装Mysql-5.7.12
- 浏览器渲染流水线解析(四)
- 单例模式理解与总结
- 【Cffe特征图可视化】【特征图】【非权重图】
- android 屏幕适配方案