wheelView自定义android日期时间选择器
16lz
2021-12-04
public class MainActivity extends AppCompatActivity { private WheelView mYearView ; private WheelView mMonthView ; private WheelView mDayView ; private WheelView mHourView ; private WheelView mMinView ; private Button mTimeBtn ; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState) ; setContentView(R.layout. activity_main ) ; initView() ; } private void initView () { mYearView = (WheelView)findViewById(R.id. year ) ; mMonthView = (WheelView)findViewById(R.id. month ) ; mDayView = (WheelView)findViewById(R.id. day ) ; mHourView = (WheelView)findViewById(R.id. hour ) ; mMinView = (WheelView)findViewById(R.id. mins ) ; mTimeBtn = (Button)findViewById(R.id. tv_time ) ; setDate() ; setTime() ; mTimeBtn .setOnClickListener( new View.OnClickListener() { @Override public void onClick (View view) { String time = String. format (Locale. CHINA , "%04d 年 %02d 月 %02d 日 %02d 时 %02d 分 " , mYearView .getCurrentItem()+ 1950 , mMonthView .getCurrentItem()+ 1 , mDayView .getCurrentItem()+ 1 , mHourView .getCurrentItem() , mMinView .getCurrentItem()) ; Toast. makeText (MainActivity. this, time , Toast. LENGTH_LONG ).show() ; } }) ; } private void setTime () { Calendar c = Calendar. getInstance () ; int curHour = c.get(Calendar. HOUR_OF_DAY ) ; int curMin = c.get(Calendar. MINUTE ) ; initHour() ; initMins() ; // 设置当前时间 mHourView .setCurrentItem(curHour) ; mMinView .setCurrentItem(curMin) ; mHourView .setVisibleItems( 7 ) ; mMinView .setVisibleItems( 7 ) ; } private void setDate () { Calendar c = Calendar. getInstance () ; int curYear = c.get(Calendar. YEAR ) ; int curMonth = c.get(Calendar. MONTH ) + 1 ; // 通过 Calendar 算出的月数要 +1 int curDate = c.get(Calendar. DATE ) ; initYear() ; initMonth() ; initDay(curYear , curMonth) ; mYearView .setCurrentItem(curYear - 1950 ) ; mMonthView .setCurrentItem(curMonth - 1 ) ; mDayView .setCurrentItem(curDate - 1 ) ; mYearView .setVisibleItems( 7 ) ; mMonthView .setVisibleItems( 7 ) ; mDayView .setVisibleItems( 7 ) ; } /** * 初始化年 */ private void initYear () { NumericWheelAdapter numericWheelAdapter = new NumericWheelAdapter( this, 1950 , 2050 ) ; numericWheelAdapter.setLabel( " 年 " ) ; numericWheelAdapter.setTextSize( 25 ) ; mYearView .setViewAdapter(numericWheelAdapter) ; mYearView .setCyclic( true ) ; } /** * 初始化月 */ private void initMonth () { NumericWheelAdapter numericWheelAdapter = new NumericWheelAdapter( this, 1 , 12 , "%02d" ) ; numericWheelAdapter.setLabel( " 月 " ) ; numericWheelAdapter.setTextSize( 25 ) ; mMonthView .setViewAdapter(numericWheelAdapter) ; mMonthView .setCyclic( true ) ; } /** * 初始化天 */ private void initDay ( int arg1 , int arg2) { NumericWheelAdapter numericWheelAdapter= new NumericWheelAdapter( this, 1 , getDay(arg1 , arg2) , "%02d" ) ; numericWheelAdapter.setLabel( " 日 " ) ; numericWheelAdapter.setTextSize( 25 ) ; mDayView .setViewAdapter(numericWheelAdapter) ; mDayView .setCyclic( true ) ; } /** * 初始化时 */ private void initHour () { NumericWheelAdapter numericWheelAdapter = new NumericWheelAdapter( this, 0 , 23 , "%02d" ) ; numericWheelAdapter.setLabel( " 时 " ) ; numericWheelAdapter.setTextSize( 25 ) ; mHourView .setViewAdapter(numericWheelAdapter) ; mHourView .setCyclic( true ) ; } /** * 初始化分 */ private void initMins () { NumericWheelAdapter numericWheelAdapter = new NumericWheelAdapter( this, 0 , 59 , "%02d" ) ; numericWheelAdapter.setLabel( " 分 " ) ; numericWheelAdapter.setTextSize( 25 ) ; mMinView .setViewAdapter(numericWheelAdapter) ; mMinView .setCyclic( true ) ; } /** * * @param year * @param month * @return */ private int getDay ( int year , int month) { int day = 30 ; boolean flag = false; switch (year % 4 ) { case 0 : flag = true; break; default : flag = false; break; } switch (month) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : day = 31 ; break; case 2 : day = flag ? 29 : 28 ; break; default : day = 30 ; break; } return day ; } }
资源下载地址 http://download.csdn.net/download/shaoninglipan/10016094
参考 http://www.cnblogs.com/liushilin/p/5749481.html
更多相关文章
- android之【本地通知Notification】
- Android之省市县三级联动
- Android(安卓)ViewPager实现图片 小圆点切换
- Android中GPS/Map的运用
- android 怎样用代码设置墙纸
- android dialog
- 开源项目Universal Image Loader for Android(安卓)说明文档 (2)
- Android(安卓)HttpClient
- Android一直震动源码