Java源码示例:com.wdullaer.materialdatetimepicker.Utils

示例1
private void updateAmPmDisplay(int amOrPm) {
    if (mVersion == Version.VERSION_2) {
        if (amOrPm == AM) {
            mAmTextView.setTextColor(mSelectedColor);
            mPmTextView.setTextColor(mUnselectedColor);
            Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
        } else {
            mAmTextView.setTextColor(mUnselectedColor);
            mPmTextView.setTextColor(mSelectedColor);
            Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
        }
    } else {
        if (amOrPm == AM) {
            mPmTextView.setText(mAmText);
            Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
            mPmTextView.setContentDescription(mAmText);
        } else if (amOrPm == PM){
            mPmTextView.setText(mPmText);
            Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
            mPmTextView.setContentDescription(mPmText);
        } else {
            mPmTextView.setText(mDoublePlaceholderText);
        }
    }
}
 
示例2
private void setHour(int value, boolean announce) {
    String format;
    if (mIs24HourMode) {
        format = "%02d";
    } else {
        format = "%d";
        value = value % 12;
        if (value == 0) {
            value = 12;
        }
    }

    CharSequence text = String.format(format, value);
    mHourView.setText(text);
    mHourSpaceView.setText(text);
    if (announce) {
        Utils.tryAccessibilityAnnounce(mTimePicker, text);
    }
}
 
示例3
private void updateAmPmDisplay(int amOrPm) {
    if (mVersion == Version.VERSION_2) {
        if (amOrPm == AM) {
            mAmTextView.setTextColor(mSelectedColor);
            mPmTextView.setTextColor(mUnselectedColor);
            Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
        } else {
            mAmTextView.setTextColor(mUnselectedColor);
            mPmTextView.setTextColor(mSelectedColor);
            Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
        }
    } else {
        if (amOrPm == AM) {
            mPmTextView.setText(mAmText);
            Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
            mPmTextView.setContentDescription(mAmText);
        } else if (amOrPm == PM){
            mPmTextView.setText(mPmText);
            Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
            mPmTextView.setContentDescription(mPmText);
        } else {
            mPmTextView.setText(mDoublePlaceholderText);
        }
    }
}
 
示例4
private void setHour(int value, boolean announce) {
    String format;
    if (mIs24HourMode) {
        format = "%02d";
    } else {
        format = "%d";
        value = value % 12;
        if (value == 0) {
            value = 12;
        }
    }

    CharSequence text = String.format(format, value);
    mHourView.setText(text);
    mHourSpaceView.setText(text);
    if (announce) {
        Utils.tryAccessibilityAnnounce(mTimePicker, text);
    }
}
 
示例5
private void setHour(int value, boolean announce) {
    String format;
    if (mIs24HourMode) {
        format = "%02d";
    } else {
        format = "%d";
        value = value % 12;
        if (value == 0) {
            value = 12;
        }
    }

    CharSequence text = String.format(format, value);
    mHourView.setText(text);
    mHourSpaceView.setText(text);
    if (announce) {
        Utils.tryAccessibilityAnnounce(mTimePicker, text);
    }
}
 
示例6
private void updateAmPmDisplay(int amOrPm) {
    if (mVersion == Version.VERSION_2) {
        if (amOrPm == AM) {
            mAmTextView.setTextColor(mSelectedColor);
            mPmTextView.setTextColor(mUnselectedColor);
            Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
        } else {
            mAmTextView.setTextColor(mUnselectedColor);
            mPmTextView.setTextColor(mSelectedColor);
            Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
        }
    } else {
        if (amOrPm == AM) {
            mPmTextView.setText(mAmText);
            Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
            mPmTextView.setContentDescription(mAmText);
        } else if (amOrPm == PM){
            mPmTextView.setText(mPmText);
            Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
            mPmTextView.setContentDescription(mPmText);
        } else {
            mPmTextView.setText(mDoublePlaceholderText);
        }
    }
}
 
示例7
private void setHour(int value, boolean announce) {
    String format;
    if (mIs24HourMode) {
        format = "%02d";
    } else {
        format = "%d";
        value = value % 12;
        if (value == 0) {
            value = 12;
        }
    }

    CharSequence text = String.format(mLocale, format, value);
    mHourView.setText(text);
    mHourSpaceView.setText(text);
    if (announce) {
        Utils.tryAccessibilityAnnounce(mTimePicker, text);
    }
}
 
示例8
@Test
public void setToNearestShouldRoundToMinDate() {
    DefaultDateRangeLimiter limiter = new DefaultDateRangeLimiter();
    Calendar minDate = Calendar.getInstance();
    minDate.set(Calendar.YEAR, 1999);

    limiter.setMinDate(minDate);

    Calendar day = Calendar.getInstance();
    day.set(Calendar.YEAR, 1998);

    Assert.assertEquals(
            limiter.setToNearestDate(day).getTimeInMillis(),
            Utils.trimToMidnight(minDate).getTimeInMillis()
    );
}
 
示例9
@Test
public void setToNearestShouldRoundToMaxDate() {
    DefaultDateRangeLimiter limiter = new DefaultDateRangeLimiter();
    Calendar maxDate = Calendar.getInstance();
    maxDate.set(Calendar.YEAR, 1999);

    limiter.setMaxDate(maxDate);

    Calendar day = Calendar.getInstance();
    day.set(Calendar.YEAR, 2000);

    Assert.assertEquals(
            limiter.setToNearestDate(day).getTimeInMillis(),
            Utils.trimToMidnight(maxDate).getTimeInMillis()
    );
}
 
示例10
@Test
public void setToNearestShouldRoundToFirstJanOfMinYearWhenBeforeMin() {
    // Case with just year range and no other restrictions
    DefaultDateRangeLimiter limiter = new DefaultDateRangeLimiter();

    limiter.setYearRange(1980, 2100);
    Calendar day = Calendar.getInstance();
    day.set(Calendar.YEAR, 1970);

    Calendar expectedDay = Calendar.getInstance();
    expectedDay.set(Calendar.YEAR, 1980);
    expectedDay.set(Calendar.MONTH, Calendar.JANUARY);
    expectedDay.set(Calendar.DAY_OF_MONTH, 1);

    Assert.assertEquals(
            Utils.trimToMidnight(expectedDay).getTimeInMillis(),
            limiter.setToNearestDate(day).getTimeInMillis()
    );
}
 
示例11
@Test
public void setToNearestShouldReturn31stDecOfMaxYearWhenAfterMax() {
    // Case with just year range and no other restrictions
    DefaultDateRangeLimiter limiter = new DefaultDateRangeLimiter();

    limiter.setYearRange(1900, 1950);
    Calendar day = Calendar.getInstance();
    day.set(Calendar.YEAR, 1970);

    Calendar expectedDay = Calendar.getInstance();
    expectedDay.set(Calendar.YEAR, 1950);
    expectedDay.set(Calendar.MONTH, Calendar.DECEMBER);
    expectedDay.set(Calendar.DAY_OF_MONTH, 31);

    Assert.assertEquals(
            Utils.trimToMidnight(expectedDay).getTimeInMillis(),
            limiter.setToNearestDate(day).getTimeInMillis()
    );
}
 
示例12
@Property
public void setToNearestShouldNeverBeBelowMinDate(
        @InRange(min = "01/01/1900", max = "12/31/2099", format = "MM/dd/yyyy") Date date,
        @InRange(min = "01/01/1900", max = "12/31/2099", format = "MM/dd/yyyy") Date minDate
) {
    DefaultDateRangeLimiter limiter = new DefaultDateRangeLimiter();

    Calendar day = Calendar.getInstance();
    day.setTime(date);

    Calendar minDay = Calendar.getInstance();
    minDay.setTime(minDate);

    limiter.setMinDate(minDay);
    Assert.assertTrue(Utils.trimToMidnight(minDay).getTimeInMillis() <= limiter.setToNearestDate(day).getTimeInMillis());
}
 
示例13
@Property
public void setToNearestShouldNeverBeAboveMaxDate(
        @InRange(min = "01/01/1800", max = "12/31/2099", format = "MM/dd/yyyy") Date date,
        @InRange(min = "01/01/1800", max = "12/31/2099", format = "MM/dd/yyyy") Date maxDate
) {
    DefaultDateRangeLimiter limiter = new DefaultDateRangeLimiter();

    Calendar day = Calendar.getInstance();
    day.setTime(date);

    Calendar minDay = Calendar.getInstance();
    minDay.set(Calendar.YEAR, 1800);
    minDay.set(Calendar.MONTH, Calendar.JANUARY);
    minDay.set(Calendar.DAY_OF_MONTH, 1);
    Utils.trimToMidnight(minDay);

    Calendar maxDay = Calendar.getInstance();
    maxDay.setTime(maxDate);

    limiter.setMinDate(minDay);
    limiter.setMaxDate(maxDay);
    Assert.assertTrue(Utils.trimToMidnight(maxDay).getTimeInMillis() >= limiter.setToNearestDate(day).getTimeInMillis());
}
 
示例14
private void setMinute(int value) {
    if (value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mMinuteView.setText(text);
    mMinuteSpaceView.setText(text);
}
 
示例15
private void setSecond(int value) {
    if(value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mSecondView.setText(text);
    mSecondSpaceView.setText(text);
}
 
示例16
private boolean addKeyIfLegal(int keyCode) {
    // If we're in 24hour mode, we'll need to check if the input is full. If in AM/PM mode,
    // we'll need to see if AM/PM have been typed.
    int textSize = 6;
    if (mEnableMinutes && !mEnableSeconds) textSize = 4;
    if (!mEnableMinutes && !mEnableSeconds) textSize = 2;
    if ((mIs24HourMode && mTypedTimes.size() == textSize) ||
            (!mIs24HourMode && isTypedTimeFullyLegal())) {
        return false;
    }

    mTypedTimes.add(keyCode);
    if (!isTypedTimeLegalSoFar()) {
        deleteLastTypedKey();
        return false;
    }

    int val = getValFromKeyCode(keyCode);
    Utils.tryAccessibilityAnnounce(mTimePicker, String.format(Locale.getDefault(), "%d", val));
    // Automatically fill in 0's if AM or PM was legally entered.
    if (isTypedTimeFullyLegal()) {
        if (!mIs24HourMode && mTypedTimes.size() <= (textSize - 1)) {
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
        }
        mOkButton.setEnabled(true);
    }

    return true;
}
 
示例17
private void updateDisplay(boolean announce) {
    mYearView.setText(YEAR_FORMAT.format(mCalendar.getTime()));

    if (mVersion == Version.VERSION_1) {
        if (mDatePickerHeaderView != null) {
            if (mTitle != null)
                mDatePickerHeaderView.setText(mTitle.toUpperCase(Locale.getDefault()));
            else {
                mDatePickerHeaderView.setText(mCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG,
                        Locale.getDefault()).toUpperCase(Locale.getDefault()));
            }
        }
        mSelectedMonthTextView.setText(MONTH_FORMAT.format(mCalendar.getTime()));
        mSelectedDayTextView.setText(DAY_FORMAT.format(mCalendar.getTime()));
    }

    if (mVersion == Version.VERSION_2) {
        mSelectedDayTextView.setText(VERSION_2_FORMAT.format(mCalendar.getTime()));
        if (mTitle != null)
            mDatePickerHeaderView.setText(mTitle.toUpperCase(Locale.getDefault()));
        else
            mDatePickerHeaderView.setVisibility(View.GONE);
    }

    // Accessibility.
    long millis = mCalendar.getTimeInMillis();
    mAnimator.setDateMillis(millis);
    int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR;
    String monthAndDayText = DateUtils.formatDateTime(getActivity(), millis, flags);
    mMonthAndDayView.setContentDescription(monthAndDayText);

    if (announce) {
        flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR;
        String fullDateText = DateUtils.formatDateTime(getActivity(), millis, flags);
        Utils.tryAccessibilityAnnounce(mAnimator, fullDateText);
    }
}
 
示例18
private void setMinute(int value) {
    if (value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mMinuteView.setText(text);
    mMinuteSpaceView.setText(text);
}
 
示例19
private void setSecond(int value) {
    if(value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mSecondView.setText(text);
    mSecondSpaceView.setText(text);
}
 
示例20
private boolean addKeyIfLegal(int keyCode) {
    // If we're in 24hour mode, we'll need to check if the input is full. If in AM/PM mode,
    // we'll need to see if AM/PM have been typed.
    int textSize = 6;
    if (mEnableMinutes && !mEnableSeconds) textSize = 4;
    if (!mEnableMinutes && !mEnableSeconds) textSize = 2;
    if ((mIs24HourMode && mTypedTimes.size() == textSize) ||
            (!mIs24HourMode && isTypedTimeFullyLegal())) {
        return false;
    }

    mTypedTimes.add(keyCode);
    if (!isTypedTimeLegalSoFar()) {
        deleteLastTypedKey();
        return false;
    }

    int val = getValFromKeyCode(keyCode);
    Utils.tryAccessibilityAnnounce(mTimePicker, String.format(Locale.getDefault(), "%d", val));
    // Automatically fill in 0's if AM or PM was legally entered.
    if (isTypedTimeFullyLegal()) {
        if (!mIs24HourMode && mTypedTimes.size() <= (textSize - 1)) {
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
        }
        mOkButton.setEnabled(true);
    }

    return true;
}
 
示例21
private void updateAmPmDisplay(int amOrPm) {
    if (amOrPm == AM) {
        mAmPmTextView.setText(mAmText);
        Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
        mAmPmHitspace.setContentDescription(mAmText);
    } else if (amOrPm == PM){
        mAmPmTextView.setText(mPmText);
        Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
        mAmPmHitspace.setContentDescription(mPmText);
    } else {
        mAmPmTextView.setText(mDoublePlaceholderText);
    }
}
 
示例22
private void setMinute(int value) {
    if (value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mMinuteView.setText(text);
    mMinuteSpaceView.setText(text);
}
 
示例23
private void setSecond(int value) {
    if(value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mSecondView.setText(text);
    mSecondSpaceView.setText(text);
}
 
示例24
private boolean addKeyIfLegal(int keyCode) {
    // If we're in 24hour mode, we'll need to check if the input is full. If in AM/PM mode,
    // we'll need to see if AM/PM have been typed.
    if ((mIs24HourMode && mTypedTimes.size() == (mEnableSeconds ? 6 : 4)) ||
            (!mIs24HourMode && isTypedTimeFullyLegal())) {
        return false;
    }

    mTypedTimes.add(keyCode);
    if (!isTypedTimeLegalSoFar()) {
        deleteLastTypedKey();
        return false;
    }

    int val = getValFromKeyCode(keyCode);
    Utils.tryAccessibilityAnnounce(mTimePicker, String.format("%d", val));
    // Automatically fill in 0's if AM or PM was legally entered.
    if (isTypedTimeFullyLegal()) {
        if (!mIs24HourMode && mTypedTimes.size() <= (mEnableSeconds ? 5 : 3)) {
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
        }
        mOkButton.setEnabled(true);
    }

    return true;
}
 
示例25
private void updateDisplay(boolean announce) {
    if (mDayOfWeekView != null) {
        if(mTitle != null) mDayOfWeekView.setText(mTitle.toUpperCase(Locale.getDefault()));
        else {
            mDayOfWeekView.setText(mCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG,
                    Locale.getDefault()).toUpperCase(Locale.getDefault()));
        }
    }

    mSelectedMonthTextView.setText(mCalendar.getDisplayName(Calendar.MONTH, Calendar.SHORT,
            Locale.getDefault()).toUpperCase(Locale.getDefault()));
    mSelectedDayTextView.setText(DAY_FORMAT.format(mCalendar.getTime()));
    mYearView.setText(YEAR_FORMAT.format(mCalendar.getTime()));

    // Accessibility.
    long millis = mCalendar.getTimeInMillis();
    mAnimator.setDateMillis(millis);
    int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR;
    String monthAndDayText = DateUtils.formatDateTime(getActivity(), millis, flags);
    mMonthAndDayView.setContentDescription(monthAndDayText);

    if (announce) {
        flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR;
        String fullDateText = DateUtils.formatDateTime(getActivity(), millis, flags);
        Utils.tryAccessibilityAnnounce(mAnimator, fullDateText);
    }
}
 
示例26
private void setMinute(int value) {
    if (value == 60) {
        value = 0;
    }
    CharSequence text = String.format(mLocale, "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mMinuteView.setText(text);
    mMinuteSpaceView.setText(text);
}
 
示例27
private void setSecond(int value) {
    if(value == 60) {
        value = 0;
    }
    CharSequence text = String.format(mLocale, "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mSecondView.setText(text);
    mSecondSpaceView.setText(text);
}
 
示例28
private boolean addKeyIfLegal(int keyCode) {
    // If we're in 24hour mode, we'll need to check if the input is full. If in AM/PM mode,
    // we'll need to see if AM/PM have been typed.
    int textSize = 6;
    if (mEnableMinutes && !mEnableSeconds) textSize = 4;
    if (!mEnableMinutes && !mEnableSeconds) textSize = 2;
    if ((mIs24HourMode && mTypedTimes.size() == textSize) ||
            (!mIs24HourMode && isTypedTimeFullyLegal())) {
        return false;
    }

    mTypedTimes.add(keyCode);
    if (!isTypedTimeLegalSoFar()) {
        deleteLastTypedKey();
        return false;
    }

    int val = getValFromKeyCode(keyCode);
    Utils.tryAccessibilityAnnounce(mTimePicker, String.format(mLocale, "%d", val));
    // Automatically fill in 0's if AM or PM was legally entered.
    if (isTypedTimeFullyLegal()) {
        if (!mIs24HourMode && mTypedTimes.size() <= (textSize - 1)) {
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
        }
        mOkButton.setEnabled(true);
    }

    return true;
}
 
示例29
void accessibilityAnnouncePageChanged() {
    MonthView mv = getMostVisibleMonth();
    if (mv != null) {
        String monthYear = getMonthAndYearString(mv.mMonth, mv.mYear, mController.getLocale());
        Utils.tryAccessibilityAnnounce(this, monthYear);
    } else {
        Log.w("DayPickerView", "Tried to announce before layout was initialized");
    }
}
 
示例30
public void initialize(OnDateSetListener callBack, Calendar initialSelection) {
    mCallBack = callBack;
    mCalendar = Utils.trimToMidnight((Calendar) initialSelection.clone());
    mScrollOrientation = null;
    //noinspection deprecation
    setTimeZone(mCalendar.getTimeZone());

    mVersion = Build.VERSION.SDK_INT < Build.VERSION_CODES.M ? Version.VERSION_1 : Version.VERSION_2;
}