栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android开源的精美日历控件,热插拔设计的万能自定义UI,flutter调用原生sdk

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android开源的精美日历控件,热插拔设计的万能自定义UI,flutter调用原生sdk











XML用法 如果需要在日历控件下方使用其它控件,使用CalendarLayout控件即可,calendar_content_view_id为其它控件的id,支持任意控件,如RecyclerView、ListView。CalendarView的calendar_card_view为任意自定义实现的日历绘制控件路径。

android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”
android:background="#fff"
app:calendar_content_view_id="@+id/linearView">

android:id="@+id/calendarView"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:background="#fff"
app:current_month_text_color="#333333"
app:current_month_lunar_text_color="#CFCFCF"
app:min_year=“2004”
app:other_month_text_color="#e1e1e1"
app:scheme_text_color="#333"
app:scheme_theme_color="#128c4b"
app:selected_lunar_text_color="#CFCFCF"
app:calendar_card_view=“com.haibin.calendarviewproject.meizu.MeiZuCalendarCardView”
app:selected_text_color="#333"
app:selected_theme_color="#108cd4"
app:week_background="#fff"
app:week_text_color="#111" />



熟悉一下这几个简单的特性,看看日历内容界面的绘制baseCalendarCardView,根据需求实现以下部分方法即可


protected void onPreviewHook() {
// TODO: 2017/11/16
}


protected void onLoopStart(int x, int y) {
// TODO: 2017/11/16
}


protected abstract void onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme);


protected abstract void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y);


protected abstract void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected); 举个例子:如果你的需求是类似魅族日历的UI,那么第一步,继承baseCalendarCardView,然后实现onDrawSelected、onDrawScheme、onDrawText三个回调函数即可

public class MeiZuCalendarCardView extends baseCalendarCardView {

private Paint mTextPaint = new Paint();
private Paint mSchemeBasicPaint = new Paint();
private float mRadio;
private int mPadding;
private float mSchemeB

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

aseLine;

public MeiZuCalendarCardView(Context context) {
super(context);

mTextPaint.setTextSize(dipToPx(context, 8));
mTextPaint.setColor(0xff111111);
mTextPaint.setAntiAlias(true);
mTextPaint.setFakeBoldText(true);

mSchemeBasicPaint.setAntiAlias(true);
mSchemeBasicPaint.setStyle(Paint.Style.FILL);
mSchemeBasicPaint.setTextAlign(Paint.Align.CENTER);
mSchemeBasicPaint.setColor(0xffed5353);
mSchemeBasicPaint.setFakeBoldText(true);
mRadio = dipToPx(getContext(), 7);
mPadding = dipToPx(getContext(), 4);
Paint.FontMetrics metrics = mSchemeBasicPaint.getFontMetrics();
mSchemebaseLine = mRadio - metrics.descent + (metrics.bottom - metrics.top) / 2 + dipToPx(getContext(), 1);

}


@Override
protected void onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme) {
mSelectedPaint.setStyle(Paint.Style.FILL);
mSelectedPaint.setColor(0x80cfcfcf);
canvas.drawRect(x + mPadding, y + mPadding, x + mItemWidth - mPadding, y + mItemHeight - mPadding, mSelectedPaint);
}


@Override
protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) {

}


@Override

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/643619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号