android折线图的应用

最近做项目遇到一个需求,要求显示温度的折线图,在网上搜索了下,一共有三个可以实现的办法:1.自定义view实现折线图,按目前的水平很难实现,所以果断放弃了。2.使用android系统自制的框架AChartEngine,这个框架可以实现各种图,有折线图,柱状图,面积图,散点图...功能还是很强大的;缺点是样子不美观(老板又是个外贸协会)这个还是我调试过的。如图:android折线图的应用_第1张图片

如果有需要详细学习的同学请看:http://blog.csdn.net/lk_blog/article/details/7645509(非常详细的介绍)

3.第三种方法就是将html利用webview把网页嵌入进去,html实现折线图还是很美观的,还有动画,可以生成的折线图的有highchart,echart,ichartjs,我用的是最后一种ichartjs的方法,具体的介绍可以看网站:http://www.ichartjs.com/ 它是支持多平台的,ios,android都支持。

好了,下面先看下效果图:

android折线图的应用_第2张图片

那么我们来看下代码:

先来html的代码:



	
		
		
		
		
		
			
最关键的是要在这个当中声明这个js,现在已经是1.2了,我还是用的之前的版本。

下面来看下xml的代码:




    

        

很简单的布局,最后来看下java的代码块:
package com.example.ichartjs;

import java.util.Random;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebView;

import com.example.mychartlinedemo.R;

public class chartjs extends Activity {

	private WebView wv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
		setContentView(R.layout.chartjs);

		wv = (WebView) findViewById(R.id.wv);
		wv.getSettings().setJavaScriptEnabled(true);
		wv.getSettings().setUseWideViewPort(true);
		wv.getSettings().setSupportZoom(true);
		// 设置是否可缩放
		wv.getSettings().setBuiltInZoomControls(true);
		wv.getSettings().setLoadWithOverviewMode(true);
		wv.requestFocus();
		wv.loadUrl("file:///android_asset/mianji_chart.html");
	}

	public void backBtn(View view) {
		finish();
	}

	// 模拟获取远程数据 这里模拟从服务端获取数据
	private String getRemoteData() {
		try {
			JSONObject object1 = new JSONObject();
			object1.put("name", "大棚温度");
			object1.put("color", "#1f7e92");
			Random random = new Random();
			// js中的数组类型要使用JSONArray对象
			JSONArray jadata = new JSONArray();
			for (int i = 0; i < 12; i++) {
				jadata.put(random.nextInt(45));
			}
			object1.put("value", jadata);
			JSONArray jsonArray = new JSONArray();
			jsonArray.put(object1);
			return jsonArray.toString();
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}

	public void updateBtn(View view) {

		wv.loadUrl("javascript:setContentInfo('" + getRemoteData() + "')");
	}

	// 设置回退
	// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
			wv.goBack(); // goBack()表示返回WebView的上一页面
			return true;
		}
		return false;
	}

}

最后附上代码:

csdn:http://download.csdn.net/detail/wyj2424/9071365

有什么问题可在下面留言,大家共同学习。

你可能感兴趣的:(Android)