个人需求
最近项目有个时间轴的需求,如下图。(数据不同,背景不同)
需求实现
先扒一扒demo中用到的工具类。
//日期格式化 20170606 -> 2017.06.06
public class TimeFormat {public static String format(String format, String time) {String result = "";SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");try {Date date = df.parse(time);SimpleDateFormat df1 = new SimpleDateFormat(format);result = df1.format(date);} catch (ParseException e) {e.printStackTrace();}return result;}
}
demo如此,实际中可能是系统时间毫秒或者秒,所以你可能需要这个
/*** 日期转换 wen*/
public class DateUtil {
private static long duration;/*** 系统时间转换为年月日* @param timestamp* @return*/public static String timestamp2y(long timestamp){SimpleDateFormat format = new SimpleDateFormat("yyyy");return format.format(timestamp*1000);}public static String timestamp2ymd(long timestamp){SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");return format.format(timestamp*1000);}public static String toymdhms(long timestamp){SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return format.format(timestamp*1000);}
}
/*** 对时间进行排序,在实际开发中最好要后台给按时间顺序排序好的数据*/public class TimeComparator implements Comparator<TimeData> {
@Overridepublic int compare(TimeData td1, TimeData td2) {return td2.getPosttime().compareTo(td1.getPosttime());}
}
/*** dp和px转换工具类*/
public class DensityUtil {
/*** 根据手机的分辨率从 dp 的单位 转成为 px(像素)*/public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density; // 获取手机的屏幕的密度return (int) (dpValue * scale + 0.5f);}/*** 根据手机的分辨率从 px(像素) 的单位 转成为 dp*/public static int px2dip(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}
}
然后就是对数据的bean类保存了 (实际开发最好私有化变量 提供get set方法,这里demo简单化)
public class TimeData {public String posttime;public String title;public TimeData(String posttime,String title) {this.title = title;this.posttime = posttime;}
}