博客的标签云功能实现已经很久了,但是只有标签功能,没有云的功能,囧!~~~
标签云主要有以下几点重要的 功能:
能根据标签下面文章的多少来决定标签的显示样式的大小
标签云能实现随机颜色
这样标签云就能云起来了,每个标签的字体大小根据数量来决定,数量越多的字体越大,最小的数量也使用12px字体,这样看起来不会太累,颜色直接随机好了
public void tag_cloud(Map<String, Integer> tags) {
int maxsize = 38;//最大字体大小
int minsize = 12;
List<Integer> list2 = CollectionUtils.toList(tags);//这里是我自己的内库实现的map转换为list
int maxval = CollectionUtils.max(list2);//获取标签下文章数量的最大值
int minval = CollectionUtils.min(list2);//获取最小值
int spread = maxval - minval;
int step=1;
if(spread!=0)
step = (maxsize - minsize) / spread;
String[] color = new String[] { "#FF0000", "#FFCC00", "#FF9900",
"#0099FF", "#999999" };
Iterator<String> it = tags.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
int val = tags.get(key);
int index = RandomUtil.nextInt(0, color.length - 1);//产生0到数组长度的随机数字,来实现随机颜色
int size = Math.round(minsize + ((val - minval) * step));
System.out.println("<a href=\"#\" style=\"font-size:"+size+"px;color:"+color[index]+"\">"+key+"</a>");
}
}