国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android GitHub開源庫CalendarView的使用

這篇具有很好參考價值的文章主要介紹了Android GitHub開源庫CalendarView的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

學習并記錄一下,使用GitHub上面的日歷控件開源庫CalendarView,地址:https://github.com/huanghaibin-dev/CalendarView

實現(xiàn)效果如下:

android開發(fā)calendarview,android

添加Gradle依賴

dependencies {
......
    //日歷控件
    implementation 'com.haibin:calendarview:3.6.2'
......
}

實現(xiàn)MultiMonthView,可多選

MultiMonthView.java繼承BaseMonthView.java查看該類,里面的不同日歷子view的畫筆都在里面有定義,可以根據(jù)需要進行設置,要什么view就使用什么畫筆進行繪制。

比如我這里的四個畫筆分別對應的含義:

mCurDayLunarTextPaint 當前日期文本顏色畫筆
mSchemeTextPaint  標記的文本畫筆
mOtherMonthTextPaint 其它月份日期顏色
mCurDayTextPaint  當前日期文本顏色畫筆
public class CustomMonthView extends MultiMonthView {
    private int mRadius;

    public CustomMonthView(Context context) {
        super(context);
    }

    @Override
    protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelectedPre, boolean isSelectedNext) {
       //繪制選中的背景
        int cx = x + mItemWidth / 2;
        int cy = y + mItemHeight / 3 + 10;

        mSelectedPaint.setAntiAlias(true);
        canvas.drawCircle(cx, cy, mRadius, mSelectedPaint);
        return true;
    }

    @Override
    protected void onPreviewHook() {
        mRadius = Math.min(mItemWidth, mItemHeight) / 5 * 2;
    }

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

    }

    /**
     * 繪制文本
     *
     * @param canvas     canvas
     * @param calendar   日歷calendar
     * @param x          日歷Card x起點坐標
     * @param y          日歷Card y起點坐標
     * @param hasScheme  是否是標記的日期
     * @param isSelected 是否選中
     */
    @Override
    protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) {
        int cx = x + mItemWidth / 2;
        int top = y - mItemHeight / 8;

        if (hasScheme) {
            canvas.drawText(String.valueOf(calendar.getDay()), cx, mTextBaseLine + top,
                    isSelected ? mSelectTextPaint
                            : calendar.isCurrentDay() ? mCurDayLunarTextPaint
                            : calendar.isCurrentMonth() ? mSchemeTextPaint : mOtherMonthTextPaint);

        } else {
            canvas.drawText(String.valueOf(calendar.getDay()), cx, mTextBaseLine + top,
                    isSelected ? mSelectTextPaint
                            : calendar.isCurrentDay() ? mCurDayLunarTextPaint
                            : calendar.isCurrentMonth() ? mCurMonthTextPaint : mOtherMonthTextPaint);
        }
        if (!isSelected && calendar.isCurrentDay())
            canvas.drawText("今", cx, mTextBaseLine + top, mCurDayTextPaint);

    }
}

布局代碼使用示例

 <com.haibin.calendarview.CalendarView
                android:id="@+id/calendarView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                app:calendar_height="40dp"
                app:current_day_text_color="#2079FF"
                app:layout_constraintStart_toStartOf="@+id/tv_years"
                app:layout_constraintTop_toBottomOf="@+id/tv_years"
                app:lunar_text_size="0dp"
                app:month_view="com.gwm.careco.mobile.car.views.CustomMonthView"
                app:month_view_scrollable="true"
                app:select_mode="single_mode"
                app:selected_text_color="#FFFFFF"
                app:selected_theme_color="#2079FF" />

實現(xiàn)點擊(<>)左右箭頭實現(xiàn)左右翻頁功能

可分別調用scrollToPre()、scrollToNext()方法,日歷布局設置都在這個類CalendarView.java,里面會有獲取當天、獲取本月、設置月視圖是否可滾動等基本屬性和回調接口,都能在該類找到,里面也都是中文注釋比較方便翻看。

//滾動到上一個月
 mCalendarView.scrollToPre();

 //滾動到下一個月
 mCalendarView.scrollToNext();
實現(xiàn)左右滑動切換月份實時顯示當前年月

只需繼承CalendarView.OnMonthChangeListener的

 @Override
    public void onMonthChange(int year, int month) {
        if (mYears != null) mYears.setText(year + "年" + month + "月");
    }


注意:記得添加calendarView.setOnMonthChangeListener(this)

如果需要監(jiān)聽日歷選中的日期有哪些,可以繼承?CalendarView.OnCalendarMultiSelectListener

注意:記得添加CalendarView.setOnCalendarMultiSelectListener(this)

可以在如下方法內獲取到選中的日期

    @Override
    public void onCalendarMultiSelect(com.haibin.calendarview.Calendar calendar, int curSize, int maxSize) {
        //獲取選中的日期
        int day = calendar.getDay();
        int month = calendar.getMonth();
    }

設置今天之后的日期不選中,繼承CalendarView.OnCalendarInterceptListener(select_mode要設置成支持攔截)

onCalendarIntercept返回true就表示不可選中,反之亦然。
    @Override
    public boolean onCalendarIntercept(com.haibin.calendarview.Calendar calendar) {
        //獲取日歷上選中的日、月、年
        int day = calendar.getDay();
        int month = calendar.getMonth();
        int year = calendar.getYear();
        //獲取當前日期的日、月、年
        int day1 = mCalendarView.getCurDay();
        int month1 = mCalendarView.getCurMonth();
        int year1 = mCalendarView.getCurYear();
        mIsClickable = year < year1 || (year == year1 && (month < month1 || (month == month1 && day < day1)));
        return mIsClickable;
    }

    @Override
    public void onCalendarInterceptClick(com.haibin.calendarview.Calendar calendar, boolean isClick) {
        ToastManager.getInstance().showToast((isClick ? "不能選擇小于當前日期" : "無效日期"));
    }

完成。文章來源地址http://www.zghlxwxcb.cn/news/detail-858097.html

到了這里,關于Android GitHub開源庫CalendarView的使用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Android開發(fā)者必須收藏的8個開源庫,Android開發(fā)面試技能介紹

    Android開發(fā)者必須收藏的8個開源庫,Android開發(fā)面試技能介紹

    聽過很多人說Android學習很簡單,做個App就上手了,工作機會多,畢業(yè)后也比較容易找工作。這種觀點可能是很多Android開發(fā)者最開始入行的原因之一。 在工作初期,工作主要是按照業(yè)務需求實現(xiàn)App頁面的功能,按照設計師的設計稿實現(xiàn)頁面的效果。 在實現(xiàn)的過程中,總是會被

    2024年03月19日
    瀏覽(106)
  • Android開發(fā) 我的開源Android Log “日志狗”LogDog

    目錄 一、簡介 二、LogDog的優(yōu)點 1、打印的格式 2、日志信息 3、LogDog的使用便利 4、參數(shù)優(yōu)化 5、日志文件輸出 6、日志文件的內容加密 三、依賴使用LogDog 1、添加倉庫 2、添加依賴 四、使用說明 1、初始化 2、配置說明 3、如何使用和參數(shù)說明 LogDog 是一個開源的 Java 日志框架,

    2024年02月04日
    瀏覽(89)
  • 從零開始學數(shù)據(jù)結構和算法:騰訊Android開發(fā)面試記錄,已開源_android 開發(fā)面試算法

    從零開始學數(shù)據(jù)結構和算法:騰訊Android開發(fā)面試記錄,已開源_android 開發(fā)面試算法

    先自我介紹一下,小編浙江大學畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前! 因此收集整理了一份《2024年最新Android移動開發(fā)全套學習資

    2024年04月25日
    瀏覽(20)
  • Android 開發(fā)的五大開源網站,安卓內存優(yōu)化面試

    Android 開發(fā)的五大開源網站,安卓內存優(yōu)化面試

    (4) 多快捷鍵支持 ① 左右翻頁 在項目(搜索)列表及詳情頁左手黨可以通過 awsd,右手黨可通過上下左右鍵或者 nl 鍵翻頁,瀏覽項目從未有過的流暢體驗。 ② 快速打標簽 項目詳情頁可通過 t 快速進入新增標簽輸入框,回車確定標簽,Esc 退出編輯。 ③ 快速搜索 項目列表頁可通

    2024年04月09日
    瀏覽(112)
  • Android開源計劃-一周開發(fā)app,webrtc音視頻開發(fā)

    Android開源計劃-一周開發(fā)app,webrtc音視頻開發(fā)

    題目 – 一周開發(fā)app計劃 首批參與成員 -小巫 -墨香 -夢痕 -邊城刀客 -徐cc 要求 – -每位認領者按照開源規(guī)范來做,代碼規(guī)范和Android開發(fā)規(guī)范 -每位認領者必須擁有github賬號,熟練使用git對代碼進來管理 -每個人認領一個功能點或模塊 -提出完善的解決方案并提供封裝良好的庫

    2024年04月08日
    瀏覽(90)
  • android 五大應用開發(fā)框架(1),騰訊竟然又偷偷開源了一套Android原生UI框架

    android 五大應用開發(fā)框架(1),騰訊竟然又偷偷開源了一套Android原生UI框架

    2、Android Runtime Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。Dalvik虛擬機設計成,在一個設備可以高效地運行多個虛擬機。Dalvik虛擬機可執(zhí)行文件格式是.dex,dex格式是

    2024年04月09日
    瀏覽(97)
  • 【Android -- UI 開發(fā)】RecyclerView 側滑菜單(側滑刪除) 開源庫

    【Android -- UI 開發(fā)】RecyclerView 側滑菜單(側滑刪除) 開源庫

    不斷學習,做更好的自己 !?? 側滑菜單確實是一個比較常見的功能,其中場景較多的就是側滑刪除,它是iOS列表刪除通用交互方式,比如微信、QQ、蘋果自帶的短信、通訊錄列表等,都有側滑刪除功能。由于國內Android、iOS通常都是一套設計,因次,Android端怎么能少得了這個

    2023年04月21日
    瀏覽(302)
  • Android開發(fā) 基于ARouter開源的路由框架的YmRouter

    目錄 一、ARouter的簡介 二,集成 ?1、添加jitpack 倉庫 2、依賴YmRouter庫 單model項目 多model項目 三、使用和ARouter的小區(qū)別 3.1、和ARouter的區(qū)別 3.2、簡單的初始化 ?3.3、簡單使用 3.4 攜帶值跳轉Activity ARouter是一個用于Android的路由框架,它能夠幫助開發(fā)者實現(xiàn)組件之間的通信和頁面

    2024年02月02日
    瀏覽(90)
  • 9成Android開發(fā)者必須收藏的80個開源庫

    9成Android開發(fā)者必須收藏的80個開源庫

    Android 應用性能調優(yōu)的技術點 http://zhuanlan.zhihu.com/kaede/20326073 Android 客戶端性能優(yōu)化 http://blog.tingyun.com/web/article/detail/155 美團 WebView性能、體驗分析與優(yōu)化 https://tech.meituan.com/WebViewPerf.html MVC,MVP 和 MVVM 的圖示 http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html 不容錯過,最全的 Androi

    2024年04月23日
    瀏覽(94)
  • [Android]使用Git將項目提交到GitHub

    [Android]使用Git將項目提交到GitHub

    如果你的Mac還沒有安裝Git,你可以通過Homebrew來安裝它: 1.創(chuàng)建本地Git倉庫 在項目的根目錄下,打開終端(Terminal)并執(zhí)行以下命令來初始化一個新的Git倉庫: 2.添加文件到倉庫 將項目文件添加到Git倉庫中。首先可以添加所有文件: 或者,你可以選擇性地添加文件: 3.提交更

    2024年02月04日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包