Android サードパーティ ライブラリ CalendarView

Android サードパーティ ライブラリ CalendarView

ニーズや図書館の利用方法に応じて、自分に合ったカレンダーを作成し、次回他のスタイルのカレンダーを作成できるように記録するだけです。住所

必要:

  1. 当月のデータのみを表示

  2. デフォルトの月ビューには長方形の線が表示されます

  3. 選択した日には選択した四角形も含まれます

  4. 今日の項目には「今日」と表示する必要があります

  5. 写真を表示するレコードの一部

1. レイアウトコード

<com.haibin.calendarview.CalendarView 
    android:id="@+id/calendarView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#fff"
    アプリ:calendar_height="46dp"
    アプリ: Calendar_padding="10dp"
    アプリ:current_month_lunar_text_color="#CFCFCF"
    アプリ:current_month_text_color="#333333"
    アプリ:min_year="2004"
    アプリ:month_view="com.haibin.calendarviewproject.zhengq.SimpleMonthView"
    アプリ:month_view_show_mode="mode_only_current" 
    app:other_month_text_color="#e1e1e1" 
    app:scheme_text="假"
    アプリ:Scheme_text_color="#333"
    アプリ:scheme_theme_color="#333"
    アプリ:selected_text_color="#333"
    アプリ:selected_theme_color="#333"
    アプリ:week_background="#fff"
    アプリ:week_text_color="#111"
    アプリ:week_view="com.haibin.calendarviewproject.zhengq.SimpleWeekView"
    アプリ:year_view_day_text_color ="#333333"
    アプリ:year_view_day_text_size="9sp"
    アプリ:year_view_month_text_color="#ff0000"
    アプリ:year_view_month_text_size="20sp"
    アプリ:year_view_scheme_color="#f17706" />

month_view_show_mode 属性は、当月のデータのみを表示するように設定できます。

Calendar_height 属性は月項目の高さを設定できます

2. デフォルトの長方形フレーム

@Override 
protected void onDrawText(Canvas Canvas, Calendar Calendar, int x, int y, boolean hasScheme, boolean isSelected) { //
    ここにテキストを描画します。太陰暦を隠す方法は聞かないでください。陰暦を隠す方法も尋ねないでください。特定の日付を変更します 特殊な文字列になっています ここでどのように表示したいかを描画できます 描画しない場合は表示されません フレームではなくカレンダーをどのように表示したいかによって異なります.canvas.drawRect(x, y, x + mItemWidth, y 
    + mItemHeight, mRectPaint); 
    ... 
}

3. 選択した長方形

@Override 
    protected boolean onDrawSelected(Canvas Canvas, Calendar Calendar, int x, int y, boolean hasScheme) { //
        選択した日のスタイルをここに描画します。onDrawScheme の呼び出しを続ける必要があるかどうかを確認します
        // 選択した日付の四角形を描画します
        mSelectedPaint.setColor( getContext().getResources().getColor(R.color.solar_background)); 
        mSelectedPaint.setStyle(Paint.Style.STROKE); 
        Canvas.drawRect(x, y, x + mItemWidth, y + mItemHeight, mSelectedPaint); 
return
        true;//これが false の場合、Scheme を含む項目を選択し、Scheme を表示せず、true に設定すると表示されます。
    }

4.スキーム

/** 
 * マークされたイベント日を描画します
 * 
 * @param Canvas Canvas 
 * @param Calendar Calendar カレンダー
 * @param x Calendar カード X の開始座標
 * @param y Calendar カード Y の開始座標
 */ 
@Override 
protected void onDrawScheme(Canvas Canvas, Calendar Calendar, int x, int y) { 
    // ここにマークされた日付スタイルを描画します。好きなことを行うことができます
//
    日付番号の左側に描画
    Canvas.drawText(calendar.getScheme(), x + mPadding, y) + mItemHeight / 2 + mPadding, mTextPaint); 
//
    絵を描く
    Drawabledrawable = getContext().getResources().getDrawable(R.mipmap.record_gong_l); 
    // 第 1 層最初
    Canvas.drawBitmap(BitmapUtils.drawable2Bitmap(drawable), x + mPadding、y + mPadding、mTextPaint);
    //最初のレイヤーの 2 番目 // 
    3 番目のレイヤーの
    Canvas.drawBitmap(BitmapUtils.drawable2Bitmap(drawable), x + mItemWidth / 2 -drawable.getIntrinsicWidth() / 2, y + mPadding, mTextPaint); //最初のレイヤーの 3 番目の
    Canvas.drawBitmap 
    (BitmapUtils.drawable2Bitmap(drawable) , x + mItemWidth -drawable.getIntrinsicWidth() - mPadding, y + mPadding, mTextPaint); // 
    2 番目のレイヤーの
3
    番目のCanvas.drawBitmap(BitmapUtils.drawable2Bitmap(drawable), x + mItemWidth -drawable.getIntrinsicWidth() - mPadding, 
            y + mItemHeight / 2 -drawable.getIntrinsicHeight() / 2, mTextPaint); 
//
    3 番目のレイヤーの最初の y 
    // 3層目個人
            y - mPadding + mItemHeight -drawable.getIntrinsicHeight()、mTextPaint); 
    Canvas.drawBitmap(BitmapUtils.drawable2Bitmap(drawable), x + mItemWidth / 2 -drawable.getIntrinsicWidth() / 2, 
            y - mPadding + mItemHeight -drawable.getIntrinsicHeight(), mTextPaint); 
    // 第三层第三个
    canvas.drawBitmap(BitmapUtils.drawable2Bitmap(drawable), x + mItemWidth -drawable.getIntrinsicWidth() - mPadding, 
            y - mPadding + mItemHeight -drawable.getIntrinsicHeight(), mTextPaint); 
}

5.仕上げ

6. 注意する

1.ペイントカラー設定

    public SimpleMonthView(Context context) { 
        super(context); 
        mRectPaint.setStyle(Paint.Style.STROKE); 
        mRectPaint.setStrokeWidth(dipToPx(context, 0.5f)); 
        mRectPaint.setColor(0x88efefef);//ここでのデモンストレーションはできませんset 透明度 1 の色が選択した色をカバーします
mPadding
        = dipToPx(getContext(), 4); 
        mTextPaint.setTextSize(dipToPx(context, 8)); 
        mTextPaint.setTextSize(dipToPx(context, 10)); 
        mTextPaint .setColor (getContext().getResources().getColor(R.color.solar_background));//black 
        mTextPaint.setAntiAlias(true); 
        mTextPaint.setFakeBoldText(true); 
    }

2. SimpleWeekView と SimpleMonthView は同じである必要があります

3. onDrawSelected で true を返します。それ以外の場合、スキームは表示されません。

4. 欠点: カレンダーの横に白い境界線が表示されます。

おすすめ

転載: blog.csdn.net/fromVillageCoolBoy/article/details/132018292