画曲线图的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);
- }
- }