几乎所有的天气软件都会有着华丽丽的温度趋势图界面,通过折线图预报未来几天的天气温度走势。原本思路是通过开源项目AchartEngine来绘制,只是绘制的界面差别相当大。AchartEngine适合数据统计。无奈在网上搜到一个自定义实现折线图界面的demo,原理也简单,就重新来实现了下。(可惜源作者的demo链接已找不到了--,)
效果图:
(图片中缺少一段折线是因为实时的天气是因为天气预报网址获取的数据问题)
自定义实现折线图的思路如下:自定义TrendView继承View,在onDraw函数中根据给定值绘制相关图片文字资源。
直接上代码:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//自定义温度偏移量倍数为8,可根据屏幕分辨率设定
int multiple = 8;
// 计算文字高度
FontMetrics fontMetrics = mTextPaint.getFontMetrics();
float fontHeight = fontMetrics.bottom - fontMetrics.top;
//从屏幕中间位置作为0℃点
int h = this.height/2;
//最高温度折线的图片,文字高度
int topTextH = (int) (h - fontHeight/2);
int topPicH = (int) (h - fo