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);
}
}
复制到剪贴板 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);
}
}
相关文章推荐
- android下使用RChart画曲线图动态刷新
- Android开发之可以动态刷新的显示数据的曲线图
- Android复习练习十一(ListView列表显示使用BaseAdapter以及ListView动态刷新)
- Android 一直不断动态刷新ui使用计时器TImer
- Android网络请求--动态加载的效果(已封装、可直接使用)
- Android应用中使用ListView来分页显示刷新的内容
- android使用Ultra-PullToRefresh实现下拉刷新自定义代码
- 发者使用 HorizontalRefreshLayout-Android 可以对 RecycView、Listview、ScrollView 等控件实现左右刷新
- Android 使用动态加载框架DL进行插件化开发
- Android---fragment动态切换简单使用
- Android使用XlistView做出上下拉刷新功能
- 【Android - 框架】之刷新加载框架Ultra-Pull-To-Refresh的使用
- 使用EXT实现无刷新动态调用股票信息
- Android 使用官方下拉刷新
- Android下使用dlopen函数动态调用.…
- Android中自定义Adapter实现ListView动态刷新进度条
- Android使用属性动画ValueAnimator动态改变SurfaceView的背景颜色
- 下拉刷新框架Android-Ultra-Pull-To-Refresh的使用
- Android使用Broadcast实现无序静态与动态广播功能
- 【Android】使用shape的同时,动态替换shape的颜色属性