返回顶部
首页 > 资讯 > 移动开发 >Android使用GridView实现日历的简单功能
  • 646
分享到

Android使用GridView实现日历的简单功能

gridviewAndroid 2022-06-06 05:06:26 646人浏览 薄情痞子
摘要

简单的日历实现,只是显示了每一个月,没有显示当天和记事这些功能 主要是计算月初是周几,月末是周几,然后相应的显示上一月多少天和下一月多少天。 先看一下关于日期的用到的几个工具

简单的日历实现,只是显示了每一个月,没有显示当天和记事这些功能

主要是计算月初是周几,月末是周几,然后相应的显示上一月多少天和下一月多少天。

先看一下关于日期的用到的几个工具


 
  public static int getCurrentMonthDay(long millSec) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(millSec);
    calendar.set(Calendar.DATE, 1);
    calendar.roll(Calendar.DATE, -1);
    int dateCount = calendar.get(Calendar.DATE);
    return dateCount;
  }
  
  public static long getFirOfMonth(long millSec) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(millSec);
    calendar.set(Calendar.DATE, 1);
    return calendar.getTimeInMillis();
  }
  
  public static long getCurrentTime() {
    Calendar calendar = Calendar.getInstance();
    return calendar.getTimeInMillis();
  }
  
  public static long getLastOrNextMonth(long millSec, int count) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(millSec);
    calendar.add(Calendar.MONTH, count);
    return calendar.getTimeInMillis();
  }
  
  public static String long2str(long millSec) {
    SimpleDateFORMat sdf = new SimpleDateFormat("yyyy-MM");
    return sdf.format(new Date(millSec));
  }

用一个List存放每一天,因为之前考虑到每一天有记事这些,所以封装了一个类,如果不需要的话可以直接一个时间戳就可以。
打开之后先获取当前的时间戳,然后初始化到当前月份的第一天,通过工具类中方法。
然后就是计算了,把上月结余的、本月所有、下月的一起添加到List中。


 private void setCalendarList(long millSecs) {
    beans.clear();
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(millSecs);
//    int nor = today.getDay();
    int max = DateUtil.getCurrentMonthDay(millSecs);
    
    for (int i = 1; i <= max; i++) {
      DayBean bean = new DayBean();
      Calendar cc = Calendar.getInstance();
      cc.setTimeInMillis(millSecs);
      cc.add(Calendar.DAY_OF_MONTH, i - 1);
      setBean(bean, cc);
      bean.setIsCurrentMonth(true);
      beans.add(bean);
    }
    //上月结余
    int fir_day_of_week = beans.get(0).getCalendar().get(Calendar.DAY_OF_WEEK);
    Log.e("AAA", "week_last:" + fir_day_of_week);
    if (fir_day_of_week != 2) {
      if(fir_day_of_week == 1){
        for (int i = 0; i < 6; i++) {
          DayBean bean = new DayBean();
          Calendar cc = Calendar.getInstance();
          cc.setTimeInMillis(millSecs);
          cc.add(Calendar.DAY_OF_MONTH, -i -1);
          setBean(bean, cc);
          Log.e("AAA", "last:" + bean.getDay());
          bean.setIsCurrentMonth(false);
          beans.add(0, bean);
        }
      }else{
        for (int i = 0; i < fir_day_of_week-2; i++) {
          DayBean bean = new DayBean();
          Calendar cc = Calendar.getInstance();
          cc.setTimeInMillis(millSecs);
          cc.add(Calendar.DAY_OF_MONTH, -i-1);
          setBean(bean, cc);
          Log.e("AAA", "last:" + bean.getDay());
          bean.setIsCurrentMonth(false);
          beans.add(0, bean);
        }
      }
    }
    //下月
    int last_day_of_week = beans.get(beans.size() - 1).getCalendar().get(Calendar.DAY_OF_WEEK);
    Log.e("AAA", "week_next:" + last_day_of_week);
    if (last_day_of_week != 1) {
      for (int i = last_day_of_week; i < 8; i++) {
        DayBean bean = new DayBean();
        Calendar cc = Calendar.getInstance();
        cc.setTimeInMillis(millSecs);
        cc.add(Calendar.DAY_OF_MONTH, i - last_day_of_week);
        setBean(bean, cc);
        Log.e("AAA", "next:" + bean.getDay());
        bean.setIsCurrentMonth(false);
        beans.add(bean);
      }
    }
    GridViewAdapter adapter = new GridViewAdapter(this, beans);
    mGridView.setAdapter(adapter);
  }
  private void setBean(DayBean bean, Calendar cc) {
    bean.setCalendar(cc);
    bean.setDay(cc.get(Calendar.DAY_OF_MONTH));
  }

设置每一天时设置了一个字段为是否为本月,如果是,则设置为黑色,否则设为灰色显示,在Adapter中的getView方法中设置即可。


  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
      convertView = inflater.inflate(R.layout.item_layout, null);
      holder = new ViewHolder();
      holder.day_text = (TextView) convertView.findViewById(R.id.day_text);
      convertView.setTag(holder);
    } else {
      holder = (ViewHolder) convertView.getTag();
    }
    holder.day_text.setText(beans.get(position).getDay() + "");
    if (beans.get(position).isToday()) {
      holder.day_text.setBackgroundColor(Color.RED);
    } else {
      holder.day_text.setBackgroundColor(Color.WHITE);
    }
    if (beans.get(position).isCurrentMonth()) {
      holder.day_text.setTextColor(Color.BLACK);
    } else {
      holder.day_text.setTextColor(Color.GRAY);
    }
    return convertView;
  }
  class ViewHolder {
    TextView day_text;
  }
您可能感兴趣的文章:Android自定义控件实现可多选课程日历CalendarViewAndroid CalendarView,DatePicker,TimePicker,以及NumberPicker的使用Android 一个日历控件的实现代码Android实现自定义日历Android自定义日历控件实例详解Android实现日历控件示例代码android自定义view之实现日历界面实例Android自定义日历Calender代码实现Android 仿日历翻页、仿htc时钟翻页、数字翻页切换效果Android可签到日历控件的实现方法Android开发之日历CalendarView用法示例


--结束END--

本文标题: Android使用GridView实现日历的简单功能

本文链接: https://lsjlt.com/news/22983.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android使用GridView实现日历的简单功能
    简单的日历实现,只是显示了每一个月,没有显示当天和记事这些功能 主要是计算月初是周几,月末是周几,然后相应的显示上一月多少天和下一月多少天。 先看一下关于日期的用到的几个工具...
    99+
    2022-06-06
    gridview Android
  • Android使用GridView实现日历功能示例(详细代码)
    Android使用GridView实现日历功能示例,代码有点多,发个图先: 如果懒得往下看的,可以直接下载源码吧,最近一直有人要,由于时间太久了,懒得找出来整理,今天又看到...
    99+
    2022-06-06
    示例 gridview Android
  • Android使用GridView实现日历的方法
    在开发中可能会遇到某些情况下需要用到日历的功能,并且还要在日历上加标签什么的,最重要的就是android自带的日历由于各个系统版本不同导致日历的样式也不同,这样就会导致使用起来比较麻烦..而且在日历中加标签也不好实现...所以很多时候日历都...
    99+
    2023-05-30
    android 日历 gridview
  • Android利用GridView实现单选功能
    先看看GridView实现单选效果 如果是你需要的,你可以继续往下看了 实现起来比较简单,直接上代码 主Activity的布局,一个Button用来跳转到筛选Acti...
    99+
    2022-06-06
    gridview Android
  • Android中使用GridView和ImageViewSwitcher实现电子相册简单功能实例
    我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切换照片。如下图的显示效果: ...
    99+
    2022-06-06
    电子 gridview Android
  • 如何使用MySQL和Java实现一个简单的日历功能
    如何使用MySQL和Java实现一个简单的日历功能在现代社会中,人们经常需要管理自己的日程安排和日常事务。一个方便实用的日历功能不仅可以帮助人们有效地管理时间,还可以提醒他们重要事件的到来。本文将介绍如何使用MySQL和Java来实现一个简...
    99+
    2023-10-22
    MySQL Java 日历
  • 使用Vue实现简单日历效果
    使用Vue实现简单的日历,供大家参考,具体内容如下 原理分析: 1.获取当前时间2.显示当前时间3.点击增加和减少月份4.大月和小月的天数 效果演示 初始样式(显示现在的日期时间) ...
    99+
    2024-04-02
  • Android Studio简单实现自定义日历
    本文实例为大家分享了Android Studio自定义日历的具体代码,供大家参考,具体内容如下 效果图: 目录树 1.DayBean.java用来存储每天的信息 package ...
    99+
    2024-04-02
  • Android实现简单的照相功能
    一个简单的照相功能,拍照之后在另一个activit中显示出拍照的图片。首先是布局文件: <xml version="1.0" encoding="utf-8"> <...
    99+
    2024-04-02
  • Android简单实现画图功能
    如何在图片上画画呢?这里写了一个demo,供大家参考 一、先看一眼工程结构 工程结构: 二、自定义view 这个自定义view实现了保留轨迹的功能,代码如下 packag...
    99+
    2022-06-06
    Android
  • Java实现简单的日历界面
    本文实例为大家分享了Java实现简单日历界面的具体代码,供大家参考,具体内容如下 请使用JFrame、JPanel、JButton、JLabel和不同的布局管理器,实现如下日历视图。...
    99+
    2024-04-02
  • Vue.js实现日历功能
    本文实例为大家分享了Vue.js实现日历功能的具体代码,供大家参考,具体内容如下 Github 功能需求 使用 Vue.js 实现指定年月的日历表,配合后台接口数据,添加对应日期的...
    99+
    2024-04-02
  • java实现日历功能
    本文实例为大家分享了java实现日历功能的具体代码,供大家参考,具体内容如下 完成一个 java application应用程序,输出一份当前所在时区当前时间的一个月的日历(1号到2...
    99+
    2024-04-02
  • js实现简单日历效果
    本文实例为大家分享了js实现简单日历效果的具体代码,供大家参考,具体内容如下 ## css模块 <style type="text/css"> *{ ma...
    99+
    2024-04-02
  • Flutter 日历组件简单实现
    目录前言安装效果demo 演示业务使用 headerView使用配置属性DEMO感谢前言 近期有个业务需求,涉及用户付费相关的计算,需要一个日历组件,组件功能如下: 仅支持从明天开始...
    99+
    2022-11-13
    Flutter 日历组件 Flutter 日历
  • Android数据库(SQLite)的简单使用——增、删、查改功能的简单实现
    记录一下Android数据库的增删查改的简单使用 话不多说,先献上你们最爱的效果图~ 这边我用的是一个ListView来展示数据库里的数据 准...
    99+
    2022-06-06
    android数据库 SQLite Android
  • Android 简单实现倒计时功能
    在 Android 中倒计时功能是比较常用的一个功能,比如短信验证码,付款倒计时等。实现方式有Handler、Thread 等,但是实现起来都有点麻烦,其实Android已经为...
    99+
    2022-06-06
    倒计时 Android
  • 简单实现Android计算器功能
    自己写的安卓的计算器: 注:这个是在mac中开发的,如果要在windows的eclipse中运行可能会出现路径问题,解决办法从windows中已有的安卓工程根目录下复制一下cl...
    99+
    2022-06-06
    Android
  • Android实现摇一摇简单功能
    说起摇一摇大家可能就会想到微信的摇一摇功能。后来很多APP也跟着上了摇一摇的相关功能。这里我们就介绍一下摇一摇怎么做。 步骤1:声明一个SensorManager对象 步骤2:重写A...
    99+
    2024-04-02
  • Android实现简单画中画功能
    Android 8.0推出了PictureInPicture(画中画功能),目前只有在8.0以上的系统上支持。对比IOS,IOS的Picture in Picture 模式是苹果公司...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作