在android小部件中显示实时图形
我想在小部件中使用图形。喜欢我想使用在android小部件中显示实时图形,android,widget,android-widget,achartengine,Android,Widget,Android Widget,Achartengine,我想在小部件中使用图形。喜欢我想使用AchartEngine制作图形。使用AchartEngine的图形在普通应用程序中正常工作,但如何在小部件中实现它 这是我的密码: public class MainActivity extends ActionBarActivity { private XYMultipleSeriesDataset mDataset = getDemoDataset(); private XYMultipleSeriesRenderer mRendere
AchartEngine
制作图形。使用AchartEngine
的图形在普通应用程序中正常工作,但如何在小部件中实现它
这是我的密码:
public class MainActivity extends ActionBarActivity {
private XYMultipleSeriesDataset mDataset = getDemoDataset();
private XYMultipleSeriesRenderer mRenderer = getDemoRenderer();
private GraphicalView mChartView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRendererStyling();
if (mChartView == null) {
LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(MainActivity.this,
mDataset, mRenderer);
mRenderer.setSelectableBuffer(100);
layout.addView(mChartView, new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
} else {
mChartView.repaint();
}
}
private void setRendererStyling() {
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50));
mRenderer.setAxisTitleTextSize(16);
mRenderer.setChartTitleTextSize(20);
mRenderer.setLabelsTextSize(15);
mRenderer.setLegendTextSize(15);
mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
mRenderer.setZoomButtonsVisible(true);
mRenderer.setPointSize(8);
}
private XYMultipleSeriesRenderer getDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setMargins(new int[] { 20, 30, 15, 0 });
XYSeriesRenderer r = new XYSeriesRenderer();
r.setColor(Color.BLUE);
r.setPointStyle(PointStyle.SQUARE);
// r.setFillBelowLine(true);
// r.setFillBelowLineColor(Color.WHITE);
r.setFillPoints(true);
renderer.addSeriesRenderer(r);
r = new XYSeriesRenderer();
r.setPointStyle(PointStyle.CIRCLE);
r.setColor(Color.GREEN);
r.setFillPoints(true);
renderer.addSeriesRenderer(r);
renderer.setAxesColor(Color.DKGRAY);
renderer.setLabelsColor(Color.LTGRAY);
return renderer;
}
private XYMultipleSeriesDataset getDemoDataset() {
double[] seriesFirstY = { 20, -20, 63, 150, -49, 24, 91, -34, -8 };
double[] seriesSecondY = { 10, 70, -40, -20, 130, 24, 167, -34, 80 };
double[] seriesFirstX = { 0, 8, 14, 20, 35, 40, 56, 80, 109 };
double[] seriesSecondX = { 0, 24, 67, 75, 95, 134, 149, 168, 180 };
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
XYSeries firstSeries = new XYSeries("series One");
for (int i = 0; i < 9; i++)
firstSeries.add(seriesFirstX[i], seriesFirstY[i]);
dataset.addSeries(firstSeries);
XYSeries secondSeries = new XYSeries("series Two");
for (int j = 0; j < 9; j++)
secondSeries.add(seriesSecondX[j], seriesSecondY[j]);
dataset.addSeries(secondSeries);
return dataset;
}
公共类MainActivity扩展了ActionBarActivity{
私有XYmultiplesseriesdataset mDataset=getDemoDataset();
私有XYMultipleReseriesRenderer mrender=getDemoRenderer();
private GraphicalView mChartView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRenderStyleing();
如果(mChartView==null){
LinearLayout布局=(LinearLayout)findViewById(R.id.chart);
mChartView=ChartFactory.getLineChartView(MainActivity.this,
mDataset,mrender);
mrender.setSelectableBuffer(100);
layout.addView(mChartView,新的LayoutParams(
LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
}否则{
mChartView.repaint();
}
}
私有void setRenderStyleing(){
mrender.setApplyBackgroundColor(真);
mrender.setBackgroundColor(Color.argb(100,50,50,50));
mrender.setAxisTitleTextSize(16);
mRenderer.setChartTitleTextSize(20);
mrender.setLabelsTextSize(15);
mrender.setLegendTextSize(15);
mRenderer.setMargins(新的int[]{20,30,15,0});
mrender.setZoomButtonsVisible(true);
mrender.设定点大小(8);
}
私有XYMultipleReseriesRenderer getDemoRenderer(){
XYMultipleReseriesRenderer渲染器=新的XYMultipleReseriesRenderer();
setMargins(新的int[]{20,30,15,0});
XYSeriesRenderer=新的XYSeriesRenderer();
r、 setColor(Color.BLUE);
r、 设置点样式(PointStyle.SQUARE);
//r.setFillBelowLine(真);
//r.SetFillBellowlineColor(颜色为白色);
r、 设定值(真);
渲染器.addSeriesRenderer(r);
r=新的XYSeriesRenderer();
r、 设置点样式(PointStyle.CIRCLE);
r、 setColor(Color.GREEN);
r、 设定值(真);
渲染器.addSeriesRenderer(r);
渲染器.setAxesColor(Color.DKGRAY);
渲染器.setLabelsColor(Color.LTGRAY);
返回渲染器;
}
私有XYMultipleSeriesDataset getDemoDataset(){
双[]序列第一={20,-20,63,150,-49,24,91,-34,-8};
双[]序列秒={10,70,-40,-20,130,24,167,-34,80};
double[]seriesFirstX={0,8,14,20,35,40,56,80,109};
double[]seriesecondx={0,24,67,75,95,134,149,168,180};
XYmultiplesseriesdataset数据集=新的XYmultiplesseriesdataset();
XYSeries firstSeries=新XYSeries(“系列一”);
对于(int i=0;i<9;i++)
添加(seriesFirstX[i],seriesFirstY[i]);
dataset.addSeries(firstSeries);
XYSeries secondSeries=新的XYSeries(“系列二”);
对于(int j=0;j<9;j++)
添加(seriesecondx[j],seriesecondy[j]);
dataset.addSeries(第二个系列);
返回数据集;
}
我想在widget应用程序中使用上述代码。请帮助我
public class MainActivity extends AppWidgetProvider {
private XYMultipleSeriesDataset mDataset = getDemoDataset();
private XYMultipleSeriesRenderer mRenderer = getDemoRenderer();
private GraphicalView mChartView;
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++) {
int currentWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.activity_main);
setRendererStyling();
if (mChartView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
View rowView = inflater.inflate(R.layout.second, null, true);
LinearLayout layout = (LinearLayout) rowView
.findViewById(R.id.chart);
mChartView = ChartFactory.getLineChartView(context, mDataset,
mRenderer);
mRenderer.setSelectableBuffer(100);
layout.addView(mChartView, new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// views.apply(context, layout);
views.setImageViewBitmap(R.id.img_view,
layout.getDrawingCache());
appWidgetManager.updateAppWidget(currentWidgetId, views);
Toast.makeText(context, "widget added", Toast.LENGTH_SHORT)
.show();
} else {
mChartView.repaint();
}
}
}
}
公共类MainActivity扩展了AppWidgetProvider{
私有XYmultiplesseriesdataset mDataset=getDemoDataset();
私有XYMultipleReseriesRenderer mrender=getDemoRenderer();
private GraphicalView mChartView;
@SuppressLint(“新API”)
@抑制警告(“弃用”)
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,
int[]appWidgetIds){
for(int i=0;i
我试过这个代码,但它不工作…请帮助我