#趣米杯#码农天气--码农自己的天气APP(三)
2014-02-20 17:36
330 查看
本帖最后由 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,尽请期待!
块状图 饼状图 使用这些基本的图形来画柱状图什么的其实是很方便的,自己对饼状图做个处理就可以了,这块我下次可以再单独开个帖子说说,这个我们主要用的是折线图。这个类库的折线图只支持定义折线的颜色,不支持在折线的端点上方写文字(我们的这个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,尽请期待!
相关文章推荐
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
- android中的事件类型分为按键事件和屏幕触摸事件
- 添加Application Bar及多语言支持
- #趣米杯#码农天气--码农自己的天气APP(二)
- Android文件上传
- #趣米杯#码农天气--码农自己的天气APP(一)
- App间broadcast应用小例
- IOS 如何选择delegate、notification、KVO?
- IOS 如何选择delegate、notification、KVO?
- android下xml序列化工具,生成xml文件方法
- Android 2.1下调试3G模块
- listview android:cacheColorHint,android:listSelector属性作用
- iOS开发牛人博客收集
- 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态
- Android动画学习笔记-Android Animation(转)
- cocos2dx开发心得体会
- android Loader eoe_blog_933560_author
- cocos2d-html5在cocos2d-x里面打包编译
- (译)使用判别训练的部件模型进行目标检测 Object Detection with Discriminatively Trained Part Based Models
- ios 代理实例和从iPhone的photo中取得图片