自定義Android日曆,非常小巧

自定義Android日曆,只有一個CalendarView,非常小巧。核心代碼400行左右,主要就是畫。

功能:支持左右滑動切換月份,上下滑動切換年份,設置背景,邊框,週末或週一爲第一天,顯示其他月份日期等功能。 具體參考Api或者自定義。
CSDN:https://blog.csdn.net/lylddingHFFW/article/details/88227283
GitHub:https://github.com/lyldding/CalendarView

大致思路:(主要分爲5個區域)
1,初始化時計算每個區域每個Item的具體位置,並緩存。
2,紅色年月爲顯示區域,在更新時同步更新其他四個區域的日期,並緩存。
3,處理移動和繪製。

代碼簡述:(具體看源碼吧,核心代碼400行左右)
1,計算各個Item的具體位置,並更新月份信息

private void computeData() {
    mViewRectF.set(0 + mStrokeWidth / 2f, 0 + mStrokeWidth / 2f, mViewWidth - mStrokeWidth / 2f, mViewHeight - mStrokeWidth / 2f);
    mViewWidth = (int) mViewRectF.width();
    mItemWidth = mViewWidth / CalendarUtils.WEEK_COLUMN;
    computeTitleData();
    computeWeekData();
    computeDayData();
    updateMonthData(mCurrentYear, mCurrentMonth, Type.NONE);
}

2,繪製各個部分:背景,年月和切換按鈕,星期,日期。

protected void onDraw(Canvas canvas) {
    mIsDrawing = true;
    drawBackground(canvas);
    drawDataStr(canvas);
    drawSwitchButton(canvas);
    drawWeek(canvas);
    drawAllDay(canvas);
    drawOuterLine(canvas);
    mIsDrawing = false;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章