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