最简单的时间轴实现

Android简单时间轴实现教程
本文介绍了如何在Android app中实现一个简洁的时间轴效果,适用于初学者。代码未进行封装,易于理解。主要内容包括时间轴的展示效果,以及根据时间自动判断显示为今天、昨天、刚刚等不同状态的方法。时间判断逻辑被封装到工具类中,方便复用。提供了源码下载链接。

时间轴在一些小清新的app还是能带来不错的效果,我这里只是简单的实现了一下。由于代码没有做什么封装,都是还是比较简单已读,适合初学者。
先看看效果图吧。
这里写图片描述
在使用时需要传入的数据,只需要传入item的时间,然后就可以根据时间,自动判断是今天、昨天、刚刚、5分钟、10分钟等等。item的其他数据,读者可以自由添加。这里主要的代码有对头部添加和时间的判断。
自动头部添加代码如下:

   private List<PoliceOfThingBean> sorting(List<PoliceOfThingBean> data) {
        long mTime = 0;
        int month = 0; //上一条的月份
        int day = 0;
        //动态添加时间标题样式
        for (int i = 0; i < data.size(); i++) {
            long time = data.get(i).getTime();
            mTime = i == 0 ? time : mTime;
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date(time));
            //判断是否是同一天
            int cuDay = calendar.get(Calendar.DAY_OF_MONTH);
            int cuMonth = calendar.get(Calendar.MONTH);
            if (day != cuDay || cuMonth != month) {
                //如果不是同一天,则添加标题样式
                PoliceOfThingBean bean = new PoliceOfThingBean();
                bean.setMode(0);
                bean.setTime(time);
                data.add(i,bean);
            }
            month = cuMonth;
            day =cuDay;
        }
        return data;
    }

对时间的判断,我这里单独提出到一个工具类中,这样方便应用中其他地方如果有相同的时间显示需求是,可以快速使用。部分代码如下:

 public static String getTime(long time) {
        long diff = System.currentTimeMillis() - time;
        int judgment = (int) (diff / 60000);//距离现在多少分钟
        String result = "";
        if (judgment < 5) {
            result = "刚刚";
        } else if (judgment < 10) {
            result = "5分钟前";
        } else if (judgment < 30) {
            result = "10分钟前";
        } else if (judgment < 60) {
            result = "30分钟前";
        } else if (judgment < 100) {
            result = "1小时前";
        } else {
            //限时具体时间
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); // 24小时制
            result = sdf.format(new Date(time));
        }
        return result;
    }
 public static String getDay(long time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 24小时制
        String old = sdf.format(new Date(time));
        String month = old.substring(5, 7);
        String day = old.substring(8, 10);

        Date d = new Date();
        String str = sdf.format(d);
        @SuppressWarnings("unused")
        String nowmonth = str.substring(5, 7);
        String nowday = str.substring(8, 10);
        String result = null;

        int temp = Integer.parseInt(nowday) - Integer.parseInt(day);
        switch (temp) {
            case 0:
                result = "今天";
                break;
            case 1:
                result = "昨天";
                break;
            case 2:
                result = "前天";
                break;
            default:
                result = "以前";
                break;
        }
        return result;
    }

有兴趣的读者可以下载源码,下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值