Loading core/java/android/widget/DayPickerPagerAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -282,7 +282,7 @@ class DayPickerPagerAdapter extends PagerAdapter { public CharSequence getPageTitle(int position) { final SimpleMonthView v = mItems.get(position).calendar; if (v != null) { return v.getTitle(); return v.getMonthYearLabel(); } return null; } Loading core/java/android/widget/SimpleMonthView.java +43 −28 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.internal.R; import com.android.internal.widget.ExploreByTouchHelper; import java.text.NumberFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Locale; Loading @@ -55,13 +56,15 @@ import java.util.Locale; * within the specified month. */ class SimpleMonthView extends View { private static final String LOG_TAG = "SimpleMonthView"; private static final int DAYS_IN_WEEK = 7; private static final int MAX_WEEKS_IN_MONTH = 6; private static final int DEFAULT_SELECTED_DAY = -1; private static final int DEFAULT_WEEK_START = Calendar.SUNDAY; private static final String DEFAULT_TITLE_FORMAT = "MMMMy"; private static final String MONTH_YEAR_FORMAT = "MMMMy"; private static final String DAY_OF_WEEK_FORMAT = "EEEEE"; private static final int SELECTED_HIGHLIGHT_ALPHA = 0xB0; Loading @@ -73,13 +76,13 @@ class SimpleMonthView extends View { private final Paint mDayHighlightPaint = new Paint(); private final Paint mDayHighlightSelectorPaint = new Paint(); private final Calendar mCalendar = Calendar.getInstance(); private final Calendar mDayOfWeekLabelCalendar = Calendar.getInstance(); private final String[] mDayOfWeekLabels = new String[7]; private final Calendar mCalendar; private final Locale mLocale; private final MonthViewTouchHelper mTouchHelper; private final SimpleDateFormat mTitleFormatter; private final SimpleDateFormat mDayOfWeekFormatter; private final NumberFormat mDayFormatter; // Desired dimensions. Loading @@ -89,7 +92,7 @@ class SimpleMonthView extends View { private final int mDesiredCellWidth; private final int mDesiredDaySelectorRadius; private CharSequence mTitle; private String mMonthYearLabel; private int mMonth; private int mYear; Loading Loading @@ -168,15 +171,34 @@ class SimpleMonthView extends View { setAccessibilityDelegate(mTouchHelper); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); final Locale locale = res.getConfiguration().locale; final String titleFormat = DateFormat.getBestDateTimePattern(locale, DEFAULT_TITLE_FORMAT); mTitleFormatter = new SimpleDateFormat(titleFormat, locale); mDayOfWeekFormatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, locale); mDayFormatter = NumberFormat.getIntegerInstance(locale); mLocale = res.getConfiguration().locale; mCalendar = Calendar.getInstance(mLocale); mDayFormatter = NumberFormat.getIntegerInstance(mLocale); updateMonthYearLabel(); updateDayOfWeekLabels(); initPaints(res); } private void updateMonthYearLabel() { final String format = DateFormat.getBestDateTimePattern(mLocale, MONTH_YEAR_FORMAT); final SimpleDateFormat formatter = new SimpleDateFormat(format, mLocale); mMonthYearLabel = formatter.format(mCalendar.getTime()); } private void updateDayOfWeekLabels() { final Calendar calendar = Calendar.getInstance(mLocale); calendar.setFirstDayOfWeek(mWeekStart); final SimpleDateFormat formatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, mLocale); for (int i = 0; i < 7; i++) { calendar.set(Calendar.DAY_OF_WEEK, i); mDayOfWeekLabels[i] = formatter.format(calendar.getTime()); } } /** * Applies the specified text appearance resource to a paint, returning the * text color if one is set in the text appearance. Loading Loading @@ -236,13 +258,6 @@ class SimpleMonthView extends View { invalidate(); } public CharSequence getTitle() { if (mTitle == null) { mTitle = mTitleFormatter.format(mCalendar.getTime()); } return mTitle; } /** * Sets up the text and style properties for painting. */ Loading Loading @@ -607,7 +622,11 @@ class SimpleMonthView extends View { final float lineHeight = mMonthPaint.ascent() + mMonthPaint.descent(); final float y = (mMonthHeight - lineHeight) / 2f; canvas.drawText(getTitle().toString(), x, y, mMonthPaint); canvas.drawText(mMonthYearLabel, x, y, mMonthPaint); } public String getMonthYearLabel() { return mMonthYearLabel; } private void drawDaysOfWeek(Canvas canvas) { Loading @@ -630,16 +649,11 @@ class SimpleMonthView extends View { } final int dayOfWeek = (col + mWeekStart) % DAYS_IN_WEEK; final String label = getDayOfWeekLabel(dayOfWeek); final String label = mDayOfWeekLabels[dayOfWeek]; canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p); } } private String getDayOfWeekLabel(int dayOfWeek) { mDayOfWeekLabelCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); return mDayOfWeekFormatter.format(mDayOfWeekLabelCalendar.getTime()); } /** * Draws the month days. */ Loading Loading @@ -752,6 +766,8 @@ class SimpleMonthView extends View { mWeekStart = mCalendar.getFirstDayOfWeek(); } updateDayOfWeekLabels(); // Invalidate cached accessibility information. mTouchHelper.invalidateRoot(); invalidate(); Loading Loading @@ -807,11 +823,10 @@ class SimpleMonthView extends View { mEnabledDayStart = MathUtils.constrain(enabledDayStart, 1, mDaysInMonth); mEnabledDayEnd = MathUtils.constrain(enabledDayEnd, mEnabledDayStart, mDaysInMonth); // Invalidate the old title. mTitle = null; // Invalidate cached accessibility information. mTouchHelper.invalidateRoot(); updateMonthYearLabel(); } private static int getDaysInMonth(int month, int year) { Loading Loading
core/java/android/widget/DayPickerPagerAdapter.java +1 −1 Original line number Diff line number Diff line Loading @@ -282,7 +282,7 @@ class DayPickerPagerAdapter extends PagerAdapter { public CharSequence getPageTitle(int position) { final SimpleMonthView v = mItems.get(position).calendar; if (v != null) { return v.getTitle(); return v.getMonthYearLabel(); } return null; } Loading
core/java/android/widget/SimpleMonthView.java +43 −28 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.internal.R; import com.android.internal.widget.ExploreByTouchHelper; import java.text.NumberFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Locale; Loading @@ -55,13 +56,15 @@ import java.util.Locale; * within the specified month. */ class SimpleMonthView extends View { private static final String LOG_TAG = "SimpleMonthView"; private static final int DAYS_IN_WEEK = 7; private static final int MAX_WEEKS_IN_MONTH = 6; private static final int DEFAULT_SELECTED_DAY = -1; private static final int DEFAULT_WEEK_START = Calendar.SUNDAY; private static final String DEFAULT_TITLE_FORMAT = "MMMMy"; private static final String MONTH_YEAR_FORMAT = "MMMMy"; private static final String DAY_OF_WEEK_FORMAT = "EEEEE"; private static final int SELECTED_HIGHLIGHT_ALPHA = 0xB0; Loading @@ -73,13 +76,13 @@ class SimpleMonthView extends View { private final Paint mDayHighlightPaint = new Paint(); private final Paint mDayHighlightSelectorPaint = new Paint(); private final Calendar mCalendar = Calendar.getInstance(); private final Calendar mDayOfWeekLabelCalendar = Calendar.getInstance(); private final String[] mDayOfWeekLabels = new String[7]; private final Calendar mCalendar; private final Locale mLocale; private final MonthViewTouchHelper mTouchHelper; private final SimpleDateFormat mTitleFormatter; private final SimpleDateFormat mDayOfWeekFormatter; private final NumberFormat mDayFormatter; // Desired dimensions. Loading @@ -89,7 +92,7 @@ class SimpleMonthView extends View { private final int mDesiredCellWidth; private final int mDesiredDaySelectorRadius; private CharSequence mTitle; private String mMonthYearLabel; private int mMonth; private int mYear; Loading Loading @@ -168,15 +171,34 @@ class SimpleMonthView extends View { setAccessibilityDelegate(mTouchHelper); setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); final Locale locale = res.getConfiguration().locale; final String titleFormat = DateFormat.getBestDateTimePattern(locale, DEFAULT_TITLE_FORMAT); mTitleFormatter = new SimpleDateFormat(titleFormat, locale); mDayOfWeekFormatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, locale); mDayFormatter = NumberFormat.getIntegerInstance(locale); mLocale = res.getConfiguration().locale; mCalendar = Calendar.getInstance(mLocale); mDayFormatter = NumberFormat.getIntegerInstance(mLocale); updateMonthYearLabel(); updateDayOfWeekLabels(); initPaints(res); } private void updateMonthYearLabel() { final String format = DateFormat.getBestDateTimePattern(mLocale, MONTH_YEAR_FORMAT); final SimpleDateFormat formatter = new SimpleDateFormat(format, mLocale); mMonthYearLabel = formatter.format(mCalendar.getTime()); } private void updateDayOfWeekLabels() { final Calendar calendar = Calendar.getInstance(mLocale); calendar.setFirstDayOfWeek(mWeekStart); final SimpleDateFormat formatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, mLocale); for (int i = 0; i < 7; i++) { calendar.set(Calendar.DAY_OF_WEEK, i); mDayOfWeekLabels[i] = formatter.format(calendar.getTime()); } } /** * Applies the specified text appearance resource to a paint, returning the * text color if one is set in the text appearance. Loading Loading @@ -236,13 +258,6 @@ class SimpleMonthView extends View { invalidate(); } public CharSequence getTitle() { if (mTitle == null) { mTitle = mTitleFormatter.format(mCalendar.getTime()); } return mTitle; } /** * Sets up the text and style properties for painting. */ Loading Loading @@ -607,7 +622,11 @@ class SimpleMonthView extends View { final float lineHeight = mMonthPaint.ascent() + mMonthPaint.descent(); final float y = (mMonthHeight - lineHeight) / 2f; canvas.drawText(getTitle().toString(), x, y, mMonthPaint); canvas.drawText(mMonthYearLabel, x, y, mMonthPaint); } public String getMonthYearLabel() { return mMonthYearLabel; } private void drawDaysOfWeek(Canvas canvas) { Loading @@ -630,16 +649,11 @@ class SimpleMonthView extends View { } final int dayOfWeek = (col + mWeekStart) % DAYS_IN_WEEK; final String label = getDayOfWeekLabel(dayOfWeek); final String label = mDayOfWeekLabels[dayOfWeek]; canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p); } } private String getDayOfWeekLabel(int dayOfWeek) { mDayOfWeekLabelCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); return mDayOfWeekFormatter.format(mDayOfWeekLabelCalendar.getTime()); } /** * Draws the month days. */ Loading Loading @@ -752,6 +766,8 @@ class SimpleMonthView extends View { mWeekStart = mCalendar.getFirstDayOfWeek(); } updateDayOfWeekLabels(); // Invalidate cached accessibility information. mTouchHelper.invalidateRoot(); invalidate(); Loading Loading @@ -807,11 +823,10 @@ class SimpleMonthView extends View { mEnabledDayStart = MathUtils.constrain(enabledDayStart, 1, mDaysInMonth); mEnabledDayEnd = MathUtils.constrain(enabledDayEnd, mEnabledDayStart, mDaysInMonth); // Invalidate the old title. mTitle = null; // Invalidate cached accessibility information. mTouchHelper.invalidateRoot(); updateMonthYearLabel(); } private static int getDaysInMonth(int month, int year) { Loading