question: private void drawDays ( Canvas canvas ) { final TextPaint p = mDayPaint ; final int headerHeight = mMonthHeight + mDayOfWeekHeight ; final int rowHeight = mDayHeight ; final int colWidth = mCellWidth ; final float halfLineHeight = ( p . ascent ( ) + p . descent ( ) ) / 2f ; int rowCenter = headerHeight + rowHeight / 2 ; for ( int day = 1 , col = findDayOffset ( ) ; day <= mDaysInMonth ; day ++ ) { final int colCenter = colWidth * col + colWidth / 2 ; final int colCenterRtl ; if ( ViewCompatUtils . isLayoutRtl ( this ) ) { colCenterRtl = mPaddedWidth - colCenter ; } else { colCenterRtl = colCenter ; } int state = 0 ; final boolean isDayEnabled = isDayEnabled ( day ) ; final boolean isDayActivated = mActivatedDay == day ; if ( isDayActivated ) { state = VIEW_STATE_SELECTED ; canvas . drawCircle ( colCenterRtl , rowCenter , mDaySelectorRadius , mDaySelectorPaint ) ; } else if ( mTouchedItem == day ) { state = VIEW_STATE_PRESSED ; if ( isDayEnabled ) { canvas . drawCircle ( colCenterRtl , rowCenter , mDaySelectorRadius , mDayHighlightPaint ) ; } } final boolean isDayToday = mToday == day ; final int dayTextColor ; if ( isDayToday && ! isDayActivated ) { dayTextColor = mDaySelectorPaint . getColor ( ) ; } else { final int [ ] stateSet = buildState ( isDayEnabled , state ) ; dayTextColor = mDayTextColor . getColorForState ( stateSet , 0 ) ; } p . setColor ( dayTextColor ) ; canvas . drawText ( mDayFormatter . format ( day ) , colCenterRtl , rowCenter - halfLineHeight , p ) ; col ++ ; if ( col == DAYS_IN_WEEK ) { col = 0 ; rowCenter += rowHeight ; } } }
target:  Draws the month days.