#趣米杯#码农天气--码农自己的天气APP(三)

来源:互联网 发布:windows排名 编辑:程序博客网 时间:2024/06/06 19:30
本帖最后由 jnhoodlum 于 2014-1-6 17:31 编辑本文参与趣米杯征文活动,如需转载请注明出处和作者#趣米杯#码农天气--码农自己的天气APP(一)#趣米杯#码农天气--码农自己的天气APP(二)这一篇文章我主要介绍一下彩虹天气的那个趋势界面的写法,大家先对比一下彩虹天气的趋势和我自己画出来的趋势: 我反解了彩虹天气的apk文件,发现他是用的AChartEngine 我上网搜了一下,这个项目好像只提供jar包供第三方开发,源码是不公布的。我们平时看电影会说一句话:没有声音,再好的戏也出不来,这话放到我们码农界我觉得也很合适:没有源码,再好的封装用着也不放心。(有同感的要顶一下啊)本着这个原则,我后来在github上找到了一个用来画图标的开源项目:https://github.com/Androguide/HoloGraphLibrary,这个图表的库虽然实现的功能不是特别多,但是基本的折线图,饼状图和块状图都实现了:折线图 块状图 饼状图 使用这些基本的图形来画柱状图什么的其实是很方便的,自己对饼状图做个处理就可以了,这块我下次可以再单独开个帖子说说,这个我们主要用的是折线图。这个类库的折线图只支持定义折线的颜色,不支持在折线的端点上方写文字(我们的这个app要写的是温度),不过这个其实很好办,因为我们有源码!打开HoloGraphLibrary这个library project,然后直接修改LineGraph.java这个类的onDraw方法,在最后添加下面一句话,我们就可以把温度显示出来了: paint.setColor(line.getColor()); paint.setTextSize(20); canvas.drawText((int)p.getY()+"℃", xPixels-18, yPixels-10, paint);复制代码其他还有一些修改折线颜色的代码我就不贴了,大家可以自己随便改个颜色试试。我们调用的时候也很方便, Line l1 = new Line(); LinePoint p1 = new LinePoint(); // 高温曲线 p1.setX(1); // p1点的x坐标 p1.setY(high = Math.max(Math.max(Math.max(Integer.valueOf(tempArray[0]), Integer.valueOf(tempArray[1])), Integer.valueOf(tempArray[1])), Integer.valueOf(tempArray[1]))); // p1点的y坐标 l1.addPoint(p1); // 将p1点加入到Line复制代码添加完要画的折线的点以后,我们只需要调用下述方法即可 LineGraph li1 = (LineGraph) forcastView.findViewById(R.id.linegraph1); li1.addLine(l1); // li1.setRangeY(low-5, high+3); // 设置LineGraph 的上下距离复制代码至此,码农天气的趋势页面就画好了:下一篇文章我会说一下彩虹天气的通知栏以及桌面widget,尽请期待!
0 0