您的位置:首页 > 移动开发 > Android开发

android下使用RChart画曲线图动态刷新

2012-06-12 01:39 423 查看
画曲线图的activity:

复制到剪贴板 Java代码

import java.io.IOException;

import java.io.InputStream;


import android.app.Activity;

import android.os.Bundle;

import android.util.Log;


import com.java4less.rchart.Chart;

import com.java4less.rchart.ChartAdapter;

import com.java4less.rchart.ChartListener;

import com.java4less.rchart.ChartLoader;

import com.java4less.rchart.android.ChartPanel;

import com.java4less.rchart.gc.android.ChartAndroidImage;


public class ShowChart extends Activity {


private String data = "";

private int cishu=0;

private static final int xnum=9;

ChartLoader cha=new ChartLoader();

ChartPanel chartPanel;

public void onCreate(Bundle icicle) {

cha=new ChartLoader();

// this is to be able to load the images

ChartAndroidImage.assets=getAssets();
String chartfile=this.getIntent().getStringExtra("com.java4less.rchart.samples.file");

super.onCreate(icicle);

chartPanel = new ChartPanel(this);

try {

chartPanel.setChart(loadFromAsset(chartfile));

} catch (Exception e) {

Log.e(ChartPanel.TAG,"Could not lod chart from file.",e);

}
setContentView(chartPanel);
}

protected void onDestroy() {


if (chartPanel!=null)

if (chartPanel.getChart()!=null) chartPanel.getChart().stopUpdater();


super.onDestroy();

}

// create chart listener for the drill down chart曲线图的刷新方法

ChartAdapter chartAdapterRealtime=new ChartAdapter() {

public void chartEvent(Chart c,int type) {

// load subchart

if (type==ChartListener.EVENT_BEFORE_UPDATE) createRealtimedata(cha);

//设置刷新时间!!

c.msecs=1000;
}
};
public Chart loadFromAsset(String name) throws IOException {


InputStream is = getAssets().open(name);

cha.loadFromFile(is, true);

Log.i(ChartPanel.TAG,"Building chart ...");

Chart c=cha.build(false,false);

//c.msecs=5000;在此处尝试设置刷新时间,失败!

c.addChartListener(chartAdapterRealtime);
c.startUpdater();
Log.i(ChartPanel.TAG,"Build ok");

return c;


}

//刷新时调用该方法

private void createRealtimedata(ChartLoader loader) {

// create chart


// set initial value of the X Axis based on the time

java.util.Date now=java.util.Calendar.getInstance().getTime();

java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd/MM/yy hh:mm:ss");


loader.setParameter("XAXIS_INITIAL_DATE",formatter.format(now));


//右边为最新数据

java.util.Random r=new java.util.Random();

if(cishu<xnum)

{
if (data.length()>0) data=data+ "|" ;

data=data+r.nextInt(50);

cishu++;
}
else

{
data=data.substring(data.indexOf("|")+1)+"|"+r.nextInt(50);

}
loader.setParameter("SERIE_DATA_1",data);


}

}


调用上面activity的类:

复制到剪贴板 Java代码

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import android.app.ListActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.ListView;

import android.widget.SimpleAdapter;


import com.util.ShowChart;


public class sensor extends ListActivity {

//private static final String TAG = "J4LChartDemos";


String[] examples={"combined2Positions.txt","patternFilling.txt","linechart.txt","barChart3D.txt","targetZones.txt","MultiCharts.txt","radarChart.txt","scatterChart.txt","areaChart.txt","areaCurves.txt","axisOnTop.txt","barChart.txt","barImages.txt","bubbleChart.txt","candleStick.txt",

"combinedChart.txt","event.txt","gauge.txt","linechart3D.txt","linechartClipping.txt","linechartNULLS.txt",

"pieChart2D.txt","piechart3D.txt","realtime.txt","stackedBar.txt",

"StackedMultiAxis.txt","MultiAxis.txt"};


String[] labels={"Combined","Curves and notes","Linechart","Barchart 3D (update)","Target zones","Multicharts","Radarchart","Scatterchart","Areachart","Curves","Axis on Top","Barchart","Bars and Images","BubbleChart","Candlestick",

"Combined 2","Events","Gauge","Linechart 3D","Linechart & Clipping","Linechart and nulls",

"Piechart 2D","Piechart 3D","Realtime","Stacked bars",

"Stacked Multiaxis","MultiAxis"};



/** Called when the activity is first created. */

@Override

public void onCreate(Bundle icicle) {


super.onCreate(icicle);

List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

for (int i=0; i<examples.length;i++)

addItem(list, labels[i], activityIntent(examples[i]));

setListAdapter(new SimpleAdapter(this,list,android.R.layout.simple_list_item_1,new String[] { "title" },new int[] { android.R.id.text1 }));

}

protected Intent activityIntent(String fileName) {

Intent result = new Intent();

result.setClass(this.getApplication(),ShowChart.class);

result.putExtra("com.java4less.rchart.samples.file", fileName);

return result;

}

protected void addItem(List<Map<String,Object>> data, String name, Intent intent) {

Map<String, Object> temp = new HashMap<String, Object>();

temp.put("title", name);

temp.put("intent", intent);

data.add(temp);
}
protected void onListItemClick(ListView l, View v, int position, long id) {

Map map = (Map) l.getItemAtPosition(position);


Intent intent = (Intent) map.get("intent");

startActivity(intent);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: