博客的标签云功能实现已经很久了,但是只有标签功能,没有云的功能,囧!~~~
标签云主要有以下几点重要的 功能:
能根据标签下面文章的多少来决定标签的显示样式的大小
标签云能实现随机颜色
这样标签云就能云起来了,每个标签的字体大小根据数量来决定,数量越多的字体越大,最小的数量也使用12px字体,这样看起来不会太累,颜色直接随机好了
01 | public void tag_cloud(Map<String, Integer> tags) { |
04 | List<Integer> list2 = CollectionUtils.toList(tags); |
05 | int maxval = CollectionUtils.max(list2); |
06 | int minval = CollectionUtils.min(list2); |
07 | int spread = maxval - minval; |
10 | step = (maxsize - minsize) / spread; |
11 | String[] color = new String[] { "#FF0000" , "#FFCC00" , "#FF9900" , |
12 | "#0099FF" , "#999999" }; |
13 | Iterator<String> it = tags.keySet().iterator(); |
14 | while (it.hasNext()) { |
15 | String key = it.next(); |
16 | int val = tags.get(key); |
17 | int index = RandomUtil.nextInt( 0 , color.length - 1 ); |
18 | int size = Math.round(minsize + ((val - minval) * step)); |
19 | System.out.println( "<a href=\"#\" style=\"font-size:" +size+ "px;color:" +color[index]+ "\">" +key+ "</a>" ); |
使用方法:
01 | Map<String, Integer> tags= new HashMap<String, Integer>(); |
02 | tags.put( "java" , 20 ); |
03 | tags.put( "ruby" , 2 ); |
04 | tags.put( "groovy" , 4 ); |
05 | tags.put( "php" , 11 ); |
06 | tags.put( "scala" , 2 ); |
08 | tags.put( "jquery" , 16 ); |
09 | tags.put( "struts" , 20 ); |
11 | tags.put( "sql" , 10 ); |
原理基本上就这样了。。。,一个简单的标签云功能就出来了,说实话找遍百度和google都没有java 实现标签云的相关文章....最后还是根据一php哥们的思想转换为JAVA的,可惜忘了那兄弟的出处了,再次感谢下这为未知的哥们的无私贡献
上面的代码是我修改过的只是为了更好的演示tags的功能,大家可以修改成自己的POJO 来代替泛型 中的String..