日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高仿小米日历

發布時間:2023/12/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高仿小米日历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高仿小米日歷

https://github.com/wuda615/StickyCalendar

  • 高仿小米日歷
    • 使用方式
      • 導入
      • xml添加布局
      • 自定義日歷Item樣式和內容

使用方式

導入

Gradle

compile 'com.github.wuda615:StickyCalendar-release:1.0.1'

xml添加布局

<com.github.wuda615.calendar.widget.ClpsCalendarWrapperLayoutandroid:id="@+id/calendar"android:layout_width="match_parent"android:layout_height="match_parent"app:calendarItemId="@layout/item_calendar_demo"app:contentId="@+id/lv_bottom"><ListViewandroid:id="@+id/lv_bottom"android:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none" /> </com.github.wuda615.calendar.widget.ClpsCalendarWrapperLayout>
  • 將要包含的滑動控件放置在 ClpsCalendarWrapperLayout,可以是任何View,包括但不限于ListView,ScrollView,RecyclerView。

  • 對于需要使用自定義item樣式或內容的日歷,提供app:calendarItemId 屬性自由替換對應的布局,@layout/item_calendar_demo對應的布局文件完全樣式由用戶自己定義(是否顯示農歷,當天是否紅點標識事件等),當然不設置將使用默認的樣式。

  • 將ClpsCalendarWrapperLayout和包含的控件聯系起來app:contentId="@+id/lv_bottom",這個屬性是必須設置,否則滑動事件無法關聯。

  • 自定義日歷Item樣式和內容

    這里只是簡單的設置日歷Item樣式,當天紅色背景白色文字高亮,選中的日期有個藍色圓環高亮,周二、周五都用綠色標識當天有事件

    * 1. 設置Item布局文件`item_calendar_demo.xml *

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/calendar_item"android:layout_width="wrap_content"android:layout_height="50dp"><TextView android:id="@+id/tx_date"android:layout_width="30dp"android:layout_height="30dp"android:layout_centerInParent="true"android:layout_gravity="center_horizontal"android:button="@null"android:gravity="center"android:textColor="@color/calendar_text_color"android:textSize="15sp"tools:background="@drawable/calendar_orange_solid"tools:text="18" /><ImageView android:id="@+id/imv_point"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentEnd="true"android:layout_alignParentRight="true"android:layout_gravity="center_horizontal"android:layout_margin="5dp"android:src="@drawable/calendar_marker_green" /> </RelativeLayout>

    包含一個用來顯示日期的TextView和一個標識事件的ImageView

    * 2.Item視圖更新邏輯 *
    設置setRenderItemCallBack更新回調,通過CommonViewHolder和DateBeanWrapper來判斷該如何處理自己的視圖顯示

    calendar.setRenderItemCallBack(new RenderItemCallBack() {@Overridepublic void onItemRender(CommonViewHolder viewHolder, DateBeanWrapper dateBean) {rendItemView(viewHolder, dateBean);} });

    參考本例需求代碼rendItemView(viewHolder, dateBean)

    private void rendItemView(CommonViewHolder viewHolder, DateBeanWrapper dateBean) {Calendar calendar = Calendar.getInstance();calendar.setTime(dateBean.getDate());String text = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));viewHolder.setText(R.id.tx_date, text);boolean isCurrentMonth = dateBean.getMonthType() == DateBeanWrapper.MONTH_TYPE_THIS;if (DateUtils.isCheckedDay(dateBean.getDate())) {Log.d("EventCalendarAdapter", "drawCheckedDay:" + DateUtils.formatDate(dateBean.getDate()));if (DateUtils.isSameDay(dateBean.getDate(), DateUtils.getNow())) {viewHolder.setBackgroundResource(R.id.tx_date, R.drawable.calendar_item_today_bg);viewHolder.setTextColor(R.id.tx_date, ContextCompat.getColor(this, R.color.calendar_text_color_white));} else {viewHolder.setBackgroundResource(R.id.tx_date, R.drawable.calendar_item_checked_bg);viewHolder.setTextColor(R.id.tx_date, ContextCompat.getColor(this, R.color.calendar_text_color));}} else {viewHolder.setTextColor(R.id.tx_date, ContextCompat.getColor(this, isCurrentMonth ? R.color.calendar_text_color : R.color.calendar_text_color_disable));viewHolder.setBackgroundColor(R.id.tx_date, ContextCompat.getColor(this, android.R.color.transparent));}if ((dateBean.getDayOfWeek() == 2 || dateBean.getDayOfWeek() == 5) && isCurrentMonth) {viewHolder.setVisibility(R.id.imv_point, VISIBLE);} else {viewHolder.setVisibility(R.id.imv_point, GONE);}}

    * 3.其他功能*
    設置周月模式calendar.setCalendarMode(isChecked);
    跳轉到制定日期calendar.jump2Day(DateUtils.getNow());

    總結

    以上是生活随笔為你收集整理的高仿小米日历的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。