使用ichartjs生成报表以及和activity交互!


ichartjs是一款轻量级的图表工具,使用方便。

首先把需要的文件放入assets文件夹下。ichart-1.0.js,ichart-1.0.min.js。zhuzhuang_chart.html。

zhuzhuang_chart.html为要显示的页面。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>ichartjs</title>
		<script type="text/javascript" src="ichart-1.0.min.js"></script>
		<script type="text/javascript">
		<span style="color:#ff6666;">var chart;
		var data = new Array();  
        <span style="white-space:pre">	</span>var contact = window.android.getModels(); 
       <span style="white-space:pre">	</span> <span style="white-space:pre">	</span>eval('data='+contact);   
        <span style="white-space:pre">	</span>var va = eval('('+window.android.getPreference()+')');</span>
		$(function(){
				new iChart.Bar2D({
					render : 'canvasDiv',
					data: data,<span style="white-space:pre">	</span>//动态加载数据
					turn_off_touchmove:true,
					title : {
						text:va.size*30,
						color:va.color
					},
					width : 500,
					height : va.size*30+160,  // 动态改变图表的高度
					offsetx:20,
					coordinate:{
						width:500,
						height:va.size*30, <span style="font-family: Arial, Helvetica, sans-serif;">// 动态改变图表的高度</span>
						grid_color:'#4e5464',
						axis:{
							color:'#4e5464',
							width:[0,0,8,1]
						},
						scale:[{
							 position:'bottom',	
							 start_scale:0,
							 end_scale:40,
							 scale_space:5,
							 label:{color:'#ffffff'},
							 listeners:{
								parseText:function(t,x,y){
									return {text:t}
								}
							 }
						}]
					},
					label:{color:'#dcdcdc'},
					background_color : '#3c4251',
					sub_option:{
						listeners:{
							parseText:function(r,t){
								return t;
							}
						}
					},
					legend:{enable:false}
				}).draw();
			});
			</script>
		</head>
		<body>
			<div id='canvasDiv'></div>
		</body>
</html>
各个属性的用法可以去查看ichartjs官网,这里就不在累赘了。

之后设置webView控件,因为需要使用webView控件进行显示。设置如下:

wv.getSettings().setJavaScriptEnabled(true); //设置支持javascript显示

wv.getSettings().setBuiltInZoomControls(true);   //设置可以进行缩放
wv.addJavascriptInterface(this,"android"); //设置javascript和activity交互的接口,这里设置为本activity。


交互方法为:

@JavascriptInterface
	public String getModels()
	{
		String Json = null;
		try
		{
			JSONArray array = new JSONArray();
			for(DeviceMobile moblie:listDevice)
			{
				JSONObject object = new JSONObject();
				object.put("name", moblie.getName());
				object.put("value", moblie.getCount());
				object.put("color", "#b5bcc5");
				array.put(object);
			}
			Json =  array.toString();
		}
		catch(JSONException e)
		{
			e.printStackTrace();
		}
		return Json;
	}
	
	@JavascriptInterface
	public String getPreference()
	{
		JSONObject jsonOb =  new JSONObject();
		try
		{
			String title = station.getText().toString();
			jsonOb.put("text", title+"资源统计");
			jsonOb.put("color", "#b5bcc5");
			jsonOb.put("size", listDevice.size());
		}
		catch(JSONException e)
		{
			e.printStackTrace();
		}
		
		return jsonOb.toString();
		
	}
注意到:
@JavascriptInterface

为了系统的安全,在android4.2之后如果不加上就不能调用activity中的方法。

可能你已经发现到了这里注册了两个方法,返回的类型不一样,一个为Json数组形式,一个味json形式。

而且在js中使用的也不一样。

调用方法都是window.android.XXX();形式调用。

数组对象为:

先创建数组类型变量。

获取activity之中的数据。

使用eval()进行解析赋值。

<span style="color: rgb(255, 102, 102);">var data = new Array();  
var contact = window.android.getModels(); 
eval('data='+contact);</span>

非数组对象为:

<span style="color: rgb(255, 102, 102);">var va = eval('('+window.android.getPreference()+')'); </span>
通过eval()解析数据,并且返回变量,变量可以通过 va.XX  获取属性。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值