YearPickerView.java revision 3e9818e0267619fecebd55095ab26c53eff92e93
13e9818e0267619fecebd55095ab26c53eff92e93James Kung/* 23e9818e0267619fecebd55095ab26c53eff92e93James Kung * Copyright (C) 2013 The Android Open Source Project 33e9818e0267619fecebd55095ab26c53eff92e93James Kung * 43e9818e0267619fecebd55095ab26c53eff92e93James Kung * Licensed under the Apache License, Version 2.0 (the "License"); 53e9818e0267619fecebd55095ab26c53eff92e93James Kung * you may not use this file except in compliance with the License. 63e9818e0267619fecebd55095ab26c53eff92e93James Kung * You may obtain a copy of the License at 73e9818e0267619fecebd55095ab26c53eff92e93James Kung * 83e9818e0267619fecebd55095ab26c53eff92e93James Kung * http://www.apache.org/licenses/LICENSE-2.0 93e9818e0267619fecebd55095ab26c53eff92e93James Kung * 103e9818e0267619fecebd55095ab26c53eff92e93James Kung * Unless required by applicable law or agreed to in writing, software 113e9818e0267619fecebd55095ab26c53eff92e93James Kung * distributed under the License is distributed on an "AS IS" BASIS, 123e9818e0267619fecebd55095ab26c53eff92e93James Kung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133e9818e0267619fecebd55095ab26c53eff92e93James Kung * See the License for the specific language governing permissions and 143e9818e0267619fecebd55095ab26c53eff92e93James Kung * limitations under the License. 153e9818e0267619fecebd55095ab26c53eff92e93James Kung */ 163e9818e0267619fecebd55095ab26c53eff92e93James Kung 173e9818e0267619fecebd55095ab26c53eff92e93James Kungpackage com.android.datetimepicker.date; 183e9818e0267619fecebd55095ab26c53eff92e93James Kung 193e9818e0267619fecebd55095ab26c53eff92e93James Kungimport android.content.Context; 203e9818e0267619fecebd55095ab26c53eff92e93James Kungimport android.view.Gravity; 213e9818e0267619fecebd55095ab26c53eff92e93James Kungimport android.view.ViewGroup; 223e9818e0267619fecebd55095ab26c53eff92e93James Kungimport android.widget.FrameLayout; 233e9818e0267619fecebd55095ab26c53eff92e93James Kungimport android.widget.NumberPicker; 243e9818e0267619fecebd55095ab26c53eff92e93James Kungimport android.widget.NumberPicker.OnValueChangeListener; 253e9818e0267619fecebd55095ab26c53eff92e93James Kung 263e9818e0267619fecebd55095ab26c53eff92e93James Kung/** 273e9818e0267619fecebd55095ab26c53eff92e93James Kung * A number picker allowing a user to choose a specific year. 283e9818e0267619fecebd55095ab26c53eff92e93James Kung */ 293e9818e0267619fecebd55095ab26c53eff92e93James Kungpublic class YearPickerView extends FrameLayout implements OnValueChangeListener { 303e9818e0267619fecebd55095ab26c53eff92e93James Kung 313e9818e0267619fecebd55095ab26c53eff92e93James Kung private final NumberPicker mPicker; 323e9818e0267619fecebd55095ab26c53eff92e93James Kung private final DatePickerController mController; 333e9818e0267619fecebd55095ab26c53eff92e93James Kung 343e9818e0267619fecebd55095ab26c53eff92e93James Kung public YearPickerView(Context context, DatePickerController controller) { 353e9818e0267619fecebd55095ab26c53eff92e93James Kung super(context); 363e9818e0267619fecebd55095ab26c53eff92e93James Kung mController = controller; 373e9818e0267619fecebd55095ab26c53eff92e93James Kung ViewGroup.LayoutParams frame = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, 383e9818e0267619fecebd55095ab26c53eff92e93James Kung LayoutParams.WRAP_CONTENT); 393e9818e0267619fecebd55095ab26c53eff92e93James Kung setLayoutParams(frame); 403e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker = new NumberPicker(context); 413e9818e0267619fecebd55095ab26c53eff92e93James Kung LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 423e9818e0267619fecebd55095ab26c53eff92e93James Kung LayoutParams.WRAP_CONTENT); 433e9818e0267619fecebd55095ab26c53eff92e93James Kung params.gravity = Gravity.CENTER; 443e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setLayoutParams(params); 453e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setOnLongPressUpdateInterval(100); 463e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setMinValue(controller.getMinYear()); 473e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setMaxValue(controller.getMaxYear()); 483e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setWrapSelectorWheel(false); 493e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setValue(controller.getSelectedDay().year); 503e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setOnValueChangedListener(this); 513e9818e0267619fecebd55095ab26c53eff92e93James Kung addView(mPicker); 523e9818e0267619fecebd55095ab26c53eff92e93James Kung } 533e9818e0267619fecebd55095ab26c53eff92e93James Kung 543e9818e0267619fecebd55095ab26c53eff92e93James Kung public void setValue(int value) { 553e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setValue(value); 563e9818e0267619fecebd55095ab26c53eff92e93James Kung } 573e9818e0267619fecebd55095ab26c53eff92e93James Kung 583e9818e0267619fecebd55095ab26c53eff92e93James Kung public void onChange() { 593e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setMinValue(mController.getMinYear()); 603e9818e0267619fecebd55095ab26c53eff92e93James Kung mPicker.setMaxValue(mController.getMaxYear()); 613e9818e0267619fecebd55095ab26c53eff92e93James Kung requestLayout(); 623e9818e0267619fecebd55095ab26c53eff92e93James Kung } 633e9818e0267619fecebd55095ab26c53eff92e93James Kung 643e9818e0267619fecebd55095ab26c53eff92e93James Kung @Override 653e9818e0267619fecebd55095ab26c53eff92e93James Kung public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 663e9818e0267619fecebd55095ab26c53eff92e93James Kung mController.onYearPickerSelectionChanged(newVal); 673e9818e0267619fecebd55095ab26c53eff92e93James Kung } 683e9818e0267619fecebd55095ab26c53eff92e93James Kung} 69