Android サードパーティ ライブラリ CalendarView
ニーズや図書館の利用方法に応じて、自分に合ったカレンダーを作成し、次回他のスタイルのカレンダーを作成できるように記録するだけです。住所
必要:
-
当月のデータのみを表示
-
デフォルトの月ビューには長方形の線が表示されます
-
選択した日には選択した四角形も含まれます
-
今日の項目には「今日」と表示する必要があります
-
写真を表示するレコードの一部
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. 欠点: カレンダーの横に白い境界線が表示されます。