android日历长按拖拽,CalendarView

CalenderView

Android上一个非常优雅、高度自定义、性能高效的日历控件,完美支持周视图,支持标记、自定义颜色、农历等,任意控制月视图显示、任意日期拦截条件、自定义周起始等。Canvas绘制,极速性能、占用内存低,,支持简单定制即可实现任意自定义布局、自定义UI,支持收缩展开、性能非常高效,

这个控件内存和效率优势相当明显,而且真正做到收缩+展开,适配多种场景,支持同时多种颜色标记日历事务,支持多点触控,你真的想不到日历还可以如此优雅!更多参考用法请移步Demo,Demo实现了一些精美的自定义效果,用法仅供参考。

插拔式设计

插拔式设计:好比插座一样,插上灯泡就会亮,插上风扇就会转,看用户需求什么而不是看插座有什么,只要是电器即可。此框架使用插拔式,既可以在编译时指定年月日视图,如:app:month_view="xxx.xxx.MonthView.class",也可在运行时动态更换年月日视图,如:CalendarView.setMonthViewClass(MonthView.Class),从而达到UI即插即用的效果,相当于框架不提供UI实现,让UI都由客户端实现,不至于日历UI都千篇一律,只需遵守插拔式接口即可随意定制,自由化程度非常高。

AndroidStudio请使用3.5以上版本

support使用版本

implementation 'com.haibin:calendarview:3.6.8'

Androidx使用版本

implementation 'com.haibin:calendarview:3.6.9'

com.haibin

calendarview

3.6.9

pom

混淆proguard-rules

-keepclasseswithmembers class * {

public (android.content.Context);

}

或者针对性的使用混淆,请自行配置测试!

-keep class your project path.MonthView {

public (android.content.Context);

}

-keep class your project path.WeekBar {

public (android.content.Context);

}

-keep class your project path.WeekView {

public (android.content.Context);

}

-keep class your project path.YearView {

public (android.content.Context);

}

效果预览

功能性展示

1c1fb363a459b15aec0b44102f518288.png     

4593603f73bf77333f784bcf65045bee.png

年视图和范围选择风格

e95cf1e02ebf875a5c7c938a13a7f35c.png     

634e8d768a65df26c5befc27881c4fb1.png

中国式变态需求风格

d5f989ee5542b65300663ddc05f6bd64.png     

custom_shrink.png

收缩展开的魅族风格效果a

c7dc1f3a818db5188a35e63df5609c19.png     

af95ca026eaf65b063cd19e42f3cd5c9.png

全屏和多彩风格

3c63dec779e52f169087babd11d8f578.png     

581c0532fd0d49983c1f6d9fa2c2ecfc.png

进度条风格

2aca61a6e6d838bf998b2a1cddd61e76.png     

e06e9204d70e0d6e9c9a1d9caf5c309f.png

星系图风格

611be172c5f95e50cc95ce4bcc41825b.png     

1b73e03019383cc268b08601b420c57b.png

特别的,请注意不要复制这三个路径,自行替换您自己的自定义路径

app:month_view="com.haibin.calendarviewproject.simple.SimpleMonthView"

app:week_view="com.haibin.calendarviewproject.simple.SimpleWeekView"

app:week_bar_view="com.haibin.calendarviewproject.EnglishWeekBar"

使用方法

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

app:default_status="shrink"

app:calendar_show_mode="only_week_view"

app:calendar_content_view_id="@+id/recyclerView">

android:id="@+id/calendarView"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#fff"

app:month_view="com.haibin.calendarviewproject.simple.SimpleCalendarCardView"

app:week_view="com.haibin.calendarviewproject.simple.SimpleWeekView"

app:week_bar_view="com.haibin.calendarviewproject.EnglishWeekBar"

app:calendar_height="50dp"

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="假"

app:scheme_text_color="#333"

app:scheme_theme_color="#333"

app:selected_text_color="#fff"

app:selected_theme_color="#333"

app:week_start_with="mon"

app:week_background="#fff"

app:month_view_show_mode="mode_only_current"

app:week_text_color="#111" />

android:id="@+id/recyclerView"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#d4d4d4" />

CalendarView attrs

CalendarView api

public void setRange(int minYear, int minYearMonth, int minYearDay,

int maxYear, int maxYearMonth, int maxYearDay) ;//置日期范围

public int getCurDay(); //今天

public int getCurMonth(); //当前的月份

public int getCurYear(); //今年

public boolean isYearSelectLayoutVisible();//年月份选择视图是否打开

public void closeYearSelectLayout();//关闭年月视图选择布局

public void showYearSelectLayout(final int year); //快速弹出年份选择月份

public void setOnMonthChangeListener(OnMonthChangeListener listener);//月份改变事件

public void setOnYearChangeListener(OnYearChangeListener listener);//年份切换事件

public void setOnCalendarSelectListener(OnCalendarSelectListener listener)//日期选择事件

public void setOnCalendarLongClickListener(OnCalendarLongClickListener listener);//日期长按事件

public void setOnCalendarLongClickListener(OnCalendarLongClickListener listener, boolean preventLongPressedSelect);//日期长按事件

public void setOnCalendarInterceptListener(OnCalendarInterceptListener listener);//日期拦截和日期有效性绘制

public void setSchemeDate(Map mSchemeDates);//标记日期

public void update();//动态更新

public Calendar getSelectedCalendar(); //获取选择的日期

/**

* 特别的,如果你需要自定义或者使用其它选择器,可以用以下方法进行和日历联动

*/

public void scrollToCurrent();//滚动到当前日期

public void scrollToCurrent(boolean smoothScroll);//滚动到当前日期

public void scrollToYear(int year);//滚动到某一年

public void scrollToPre();//滚动到上一个月

public void scrollToNext();//滚动到下一个月

public void scrollToCalendar(int year, int month, int day);//滚动到指定日期

public Calendar getMinRangeCalendar();//获得最小范围日期

public Calendar getMaxRangeCalendar();//获得最大范围日期

/**

* 设置背景色

*

* @param monthLayoutBackground 月份卡片的背景色

* @param weekBackground 星期栏背景色

* @param lineBg 线的颜色

*/

public void setBackground(int monthLayoutBackground, int weekBackground, int lineBg)

/**

* 设置文本颜色

*

* @param curMonthTextColor 当前月份字体颜色

* @param otherMonthColor 其它月份字体颜色

* @param lunarTextColor 农历字体颜色

*/

public void setTextColor(int curMonthTextColor,int otherMonthColor,int lunarTextColor)

/**

* 设置选择的效果

*

* @param style 选中的style CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE

* @param selectedThemeColor 选中的标记颜色

* @param selectedTextColor 选中的字体颜色

*/

public void setSelectedColor(int style, int selectedThemeColor, int selectedTextColor)

/**

* 设置标记的色

*

* @param style 标记的style CalendarCardView.STYLE_FILL or CalendarCardView.STYLE_STROKE

* @param schemeColor 标记背景色

* @param schemeTextColor 标记字体颜色

*/

public void setSchemeColor(int style, int schemeColor, int schemeTextColor)

/**

* 设置星期栏的背景和字体颜色

*

* @param weekBackground 背景色

* @param weekTextColor 字体颜色

*/

public void setWeeColor(int weekBackground, int weekTextColor)

CalendarLayout api

public void expand(); //展开

public void shrink(); //收缩

public boolean isExpand();//是否展开了

CalendarLayout attrs

Licenses

Copyright (C) 2013 huanghaibin_dev huanghaibin_dev@163.com

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

第 25 章:View 系统与输入事件分发 LayoutInflater 运行时将 XML 布局资源转换成 View 对象,连接 res/layout 下声明式 XML 和内存中程序视图树。来源:frameworks/base/core/java/android/view/LayoutInflater.java (第 74 行)...创建自定义 View 需要理解并实现正确的回调方法。默认 onMeasure 实现 wrap_content 会填满父容器;自定义 View 需要正确处理测量模式。@Override// 固有尺寸像素。 阅读详情

相关推荐

安卓自定义日历滑动的日历控件

安卓自定义日历滑动的日历控件标签(空格分隔): 安卓最近公司项目需要做这个需求,自己才疏学浅,总算能写出个大概来,遂在这里记录下来。分析先来分析一下: 首先,我们的需求是可以左右点击查看跳转到下一个月,中间的日历控件可以水平滚动选择日期,所以我们中间的日历控件用一个RecycleView来做,左右两位的为ImageVeiw。 LRCalendarView 总体流程: 编写LRCalendarVi

牛仔面包 3963

一个流畅的拖动排序DragSortGridView,自动滚屏

先上效果流畅效果超越了网易新闻和UC浏览器的栏目收藏.gif图和实际效果有差距1.拖拽可以移动item,并且其他item会立即自动补位,快速拖拽也非常流畅 2.item太多时,拖拽到边缘时会自动滚屏. 3.可以自定义被拖拽的的View放大,添加阴影等效果 4.长按启动删除模式,需要自己实现item的删除按钮展示,自己管理删除模式的切换 5.可以放在ScrollView中拖动排序,需要Scro

虎躯一震的博客 8518

CalendarView:Android上一个优雅,万能自定义UI,支持周视图,自定义周开始,性能高效的日历控件,支持热插拔实现的UI自定义!支持标记,自定义颜色,农历,自定义月视图各种显示模式等。画布布局,速度快,占用内存低,你真的想不到日历居然还可以如此优雅!

日历查看 Android平台上优雅的CalendarView。 用画布自由绘制UI,快速,高效和低内存。 支持月视图,周视图,年视图,自定义周开始,农历日历等。 热插拔UI定制! 您想不到日历如此优雅! AndroidStudio v3.5 + 支持版本(如果使用支持包) implementation 'com.haibin:calendarview:3.6.8' 如果使用Androidx,则为Androidx版本 implementation 'com.haibin:calendarview:3.7.0' <dependency> <groupId>com.haibin</groupId> <artifactId>calendarview</artifactId> <version>3.7.0</version> <type>pom</type> </dependency> 如何使用? 保障规则 - keepclasseswithmembers class * { public < init> ( android.content . Context );

Launcher长按拖拽流程(三)长按松手简述

图标拖拽之松手逻辑 前两节简单概述了一下图标的拖动流程,本章来介绍一下松手之后的一些界面逻辑处理。 从功能上可以分为一下几种情况: 1、松手后,卸载应用,删除桌面图标 2、松手后,进入应用信息界面 3、松手后,形成文件夹 4、松手后,放入文件夹内 5、松手后,放在桌面空位置 第一章讲过,松手后的逻辑处理是在DragController类的onTouchEvent方法, Mot...

纵容的博客 2930

rbf神经网络python预测代码_RBF神经网络预测

%用RBF网络来预测股票走势clcclear%归一化数据input=[0 0 0 0 0 0.0277;0.0177 0.0292 0.0184 0.0122 0.0264 0.0492;0.0374 0.0946 0.0393 ...

weixin_39951419的博客 1889

labview设置工业摄像头外部触发

使用labview对海康MV-CA013-GM相机设置外部触发。 一、硬件部分 1、硬件引脚定义 2、触发模式设置 相机的触发模式分为两种,一种是内触发模式、另外一种是外触发模式。 3、接线图 信号线的地要跟给信号的设备共地。信号线给高电平时触发拍照。 二、软件部分 1、创建vision acquisition 2、选择使用的摄像头。 3、选择模式。 4、在Acquisition Control中设置这些选项。 5、设置保存图片路径 设置保存路径和保存图片的格式。点击完成即可 参考:https:/

qq_43493715的博客 5665

android 列表 分页 拖动,Android实现按钮拖拽还原功能

Android实现按钮拖拽还原功能发布时间:2020-08-23 00:02:45来源:脚本之家阅读:193作者:土狗的想法具体代码如下所示:public class MainActivity extends AppCompatActivity {private ImageButton ibOk ;private int lastX;private int lastY;private int st...

weixin_42364301的博客 212

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为

橙子的博客 12万+

android可点击的列表,Android实现可拖拽列表和多选功能

本文实例为大家分享了Android实现可拖拽列表和多选的具体代码,供大家参考,具体内容如下这是我已经完成的一个已经上线的OA软件的一个模块,这个模块的功能不多,已经放到GitHub上面开源了,有感兴趣的朋友可以看看UIFrame主窗口JAVA代码/*** 编辑状态下长按拖动条目* 1.通过ItemTouchHelper.Callback实现长按拖动* 2.通过isEditable的值判断是否编辑状...

weixin_36434967的博客 348

EPO: Hierarchical LLM Agents with Environment PreferenceOptimization

长期决策和规划任务依然是基于大型语言模型(LLM)的智能体面临的一大挑战(Valmeekam 等,2023;Liu 等,2023;Silver 等,2024)。这些任务需要智能体进行多步骤的规划,同时保持行为的一致性和目标导向,这对于通常被设计用于即时和局部预测的大型语言模型来说颇为困难。此外,针对具身智能体的大型语言模型微调面临的一个关键难题是大规模标注数据的需求(Reed 等,2022)。

qq_52053775的博客 142

Ghost卷积原理与构建YOLOv11的GhostNet变体

本文探讨了在边缘设备部署YOLOv11时使用Ghost卷积进行模型轻量化的实践经验。针对Jetson Nano的4GB内存限制,作者通过替换Backbone中的3x3标准卷积为Ghost卷积,实现了参数减少28%、推理速度提升38%,仅损失1.1%mAP的优化效果。文章详细介绍了Ghost卷积的实现原理、在YOLOv11中的具体替换策略,以及训练调参和部署优化的关键技巧。作者强调轻量化是计算效率与模型性能的权衡,建议工程团队保留原模型和Ghost变体两个版本,根据实际需求灵活切换。Ghost卷积的核心价值在

as1225120794的博客 169

Android 拖拽滑动(OnDragListener和ViewDragHelper)

文章目录1 ViewDragHelper2 OnDragListener 两个都是Google提供的,为什么要提供两种拖拽工具?各自的使用场景有什么不同? 1 ViewDragHelper 2 OnDragListener

Vincent的博客 9704

SAP FICO应付票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO应付票据平台开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

我好像病了的博客 379

android dialog动画_Android开发常用轮子

一、快速开发框架XSnow基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展2.MVPArms一个整合了大量主流开源项目高度可配置化的 Android MVP 快速集成框架(包括Mvp、 Dagger2、RxJava、RxAndroid、Rxlifecycle...

weixin_39842611的博客 185

raw (R/G, B/G) 色度域从白点筛选到 mired 直方图的完整构建流程

raw 域用draw​δraw​筛出白点后,。,与 CIE uv 域流程逐步对应。

大熊 39

Google Cameraserver 看门狗CameraServiceWatchdog超时crash原理分析

本文分析了Android CameraServiceWatchdog机制的工作原理。该看门狗用于监控相机服务关键操作(如close、flush)的超时情况,通过定时器线程检测阻塞问题。文章详细讲解了Watchdog的初始化流程、使能方式、内部定时器机制(默认周期100ms,650次循环触发超时),并提供了configureStreams阶段的客制化实现方案。当检测到超时,Watchdog会触发abort生成tombstone日志,便于调试分析。

1130

android组件化方案、二维码扫码、Kotlin新闻客户端、动画特效等源码

Android精选源码 CalendarView日历选择器 android下拉刷新动画效果代码 一个非常方便的fragment页面框架 android组件化方案源码 Zxing实现二维码条形码的扫描和解析 android实现拖拽返回PhotoView 基于Kotlin的新闻客户端 ...

chuangzhi9350的博客 161

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android 常用开源库(UI)

material-calendarview 日历 https://github.com/prolificinteractive/material-calendarview TakePhoto 图片选择器 https://github.com/crazyandcoder/TakePhoto citypicker 城市选择器 https://github.com/crazyandcod...

映映的博客 394

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android 拖拽gridview,Android 可拖拽的GridView效果实现, 长按可拖拽和item实时交换

具体的原理描述,可以去看夏神的这个博文效果图: 这里,采用了gridview的onLongItemClickListener,来拿到长按的view,用于拖动解决了,原来实现中可能遇到的item消失问题主要代码:package com.stone.draggridview.my;import android.app.Activity;import android.content.Context;im...

weixin_30895873的博客 841

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 控件拖拽功能,android 简单实现可拖拽控件

继承TextView用来方便使用 主要有下面几个实现方法1.偷懒的Drawable方法setDrawableLeftResource(int resourceId)setDrawableTopResource(int resourceId)setDrawableRightResource(int resourceId)setDrawableBottomResource(int resourceId...

weixin_42348394的博客 1216

基于 Vue3 + FullCalendar 打造高效拖拽式日历组件

月视图(默认):全局把握当月所有事件分布周视图:聚焦一周内的详细日程安排日视图:查看当天的小时级时间规划通过顶部工具栏的按钮可以快速切换,满足不同粒度的时间查看需求。本组件通过 Vue3 与 FullCalendar 的结合,实现了一个功能丰富、交互友好的日历应用。直观的拖拽操作,降低用户使用成本多视图切换,满足不同场景需求完整的事件管理流程,从创建到编辑一站式完成响应式设计,适配不同屏幕尺寸。

qq_45780736的博客 1845

如何用Calendar.js打造响应式拖拽事件日历?超实用教程来啦

Calendar.js是一款功能强大的JavaScript拖拽事件日历库,完全响应式且兼容所有现代浏览器。通过简单配置,你可以快速实现日、周、月、年视图及时间线展示,支持事件拖放调整、多语言切换和跨框架集成,是前端开发的得力助手。 ## ???? 核心功能亮点 ### ✅ 丰富视图模式 Calendar.js提供多种直观的时间视图,满足不同场景需求: [![Calendar.js月视图展示](h...

gitblog_00151的博客 480

【亲测免费】 全日程拖拽事件日历库:FullCalendar 使用指南

FullCalendar 是一款广受好评的JavaScript事件日历库,它支持全尺寸拖拽功能,旨在简化事件管理和展示。该开源项目拥有超过十年的历史,积累了一百二十多位贡献者,确保了其核心部分始终免费且开放源代码。FullCalendar提供了高度可配置的特性,目前已有超过三百个设置选项,并持续在每次发布中添加新功能。通过其模块化的插件系统,开发者能够灵活选择功能,有效控制项目体积,使之既强大又轻...

gitblog_00948的博客 1111
上一篇: android studio怎么输入中文,怎么在linux版的AndroidStudio输入中文?
下一篇: html5语音闹钟代码,HTML5数字时钟之闹钟
芦小苇
博客等级 码龄7年 30粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值