美文网首页
关于安卓自定义时间选择控件的实现(二)

关于安卓自定义时间选择控件的实现(二)

作者: motosheep | 来源:发表于2021-06-17 15:47 被阅读0次

    关于安卓自定义日期选择控件实现,之前已经有过一篇类似的文章了,
    传送门:时间选择库
    而本次实践,主要实现的是年月日的时间选择,效果图如下:

    1 2

    可以看到,可以选择日期,还有选择年份。

    实现思路

    (一)数据的获取

    数据获取,主要通过Calendar对象进行获取数据,例如当前年月日的获取、某月下的天数获取,需要考虑该月的前一个月与后一个月补充的天数、某年下月份信息的获取。
    部分核心代码如下:

            System.out.println("年:" + cal.get(Calendar.YEAR));
            System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
            System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
            System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
            System.out.println("分:" + cal.get(Calendar.MINUTE));
            System.out.println("秒:" + cal.get(Calendar.SECOND));
    

    还有其他例如获取一个月有多少天,某天是星期几之类的不再一一列出。

    (二)数据的同步

    数据同步,定义了一个内存单例类,里面专门把当前需要同步的数据保存,供所有页面进行调用。

    (三)自定义日历控件

    自定义日历控件,通过代码动态增加控件的形式,进行定义。

    (四)触摸事件分发

    本项目实现框架是以fragment+viewpager+recyclerview形式开发。
    对于月:定义了12个fragment+viewpager进行复用,定义如下图:


    月份fragment

    并且重写了viewpager的onTouchEvent()方法,进行复用,如下图:


    viewpager监听事件
    当滑动到边缘位置,再次滑动则会监听并检测是否需要加载上一年or下一年,最后处理相关逻辑。同理,对于年份的滑动监听事件,性质一样。

    备注:
    (1)项目的自定义控件,后续可以使用canvas绘制等手段进行优化

    最后附上源码地址:
    https://gitee.com/motosheep/libdatesel-github

    that's all-------------------------------------------------------------------------------------------

    相关文章

      网友评论

          本文标题:关于安卓自定义时间选择控件的实现(二)

          本文链接:https://www.haomeiwen.com/subject/diecyltx.html