在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
我试过这个代码,但它不工作…请帮助我