Java 如何在achartengine绘图中绘制图形

Java 如何在achartengine绘图中绘制图形,java,android,graph,achartengine,Java,Android,Graph,Achartengine,是否有可能使用achartengine库使其在绘制图形时运行缓慢。比如每毫秒画一个点?我真的不确定我们是否会做出改变。是的,这是可能的 您可以创建一个timertask,以便每隔一段时间执行以下操作: 将(x,y)对添加到当前系列 重新绘制图表 这样,您可以“缓慢”地绘制图形 这是我写的一个示例,它将每隔一段时间绘制一个y=x^2的图形。这并不完全是你想要做的,但原则是一样的,玩它,修改它以适应你的需要,告诉我如果你遇到任何问题 @Override protected void onCreate

是否有可能使用achartengine库使其在绘制图形时运行缓慢。比如每毫秒画一个点?我真的不确定我们是否会做出改变。

是的,这是可能的

您可以创建一个timertask,以便每隔一段时间执行以下操作:

  • 将(x,y)对添加到当前系列
  • 重新绘制图表
  • 这样,您可以“缓慢”地绘制图形

    这是我写的一个示例,它将每隔一段时间绘制一个y=x^2的图形。这并不完全是你想要做的,但原则是一样的,玩它,修改它以适应你的需要,告诉我如果你遇到任何问题

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.plot);
    
        // Buttons
        mButtonStart = (Button) findViewById(R.id.button_plot_start);
        mButtonStop = (Button) findViewById(R.id.button_plot_stop);
    
        mButtonStart.setOnClickListener(this);
        mButtonStop.setOnClickListener(this);
    
        // Chart
        mRenderer.setZoomButtonsVisible(true);
        String seriesTitle = "SAMPLE"
    
        XYSeries series = new XYSeries(seriesTitle);
        mDataSet.addSeries(series);
        mCurrentSeries = series;
        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setPointStyle(PointStyle.SQUARE);
        renderer.setFillPoints(true);
        renderer.setDisplayChartValues(true);
        renderer.setColor(Color.RED);
        mRenderer.addSeriesRenderer(renderer);
        mRenderer.setXLabels(0);
    }
    
    @Override
    protected void onRestart() {
        super.onRestart();
    }
    
    @Override
    protected void onResume() {
    
        super.onResume();
        if (mChartView == null) {
            // Enable click and pan
            mRenderer.setClickEnabled(true);
            mRenderer.setPanEnabled(true, true);
    
            LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayout_chart);
            mChartView = ChartFactory.getLineChartView(this, mDataSet, mRenderer);
            mRenderer.setClickEnabled(true);
            mChartView.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                }
            });
            mChartView.setOnLongClickListener(new OnLongClickListener() {
                public boolean onLongClick(View v) {
                    return false;
                }
            });
            mChartView.addZoomListener(new ZoomListener() {
    
                public void zoomApplied(ZoomEvent e) {
    
                }
                public void zoomReset() {
                }
            }, true, true);
    
            mChartView.addPanListener(new PanListener() {
                public void panApplied() {
                }
            });
    
            layout.addView(mChartView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
        } else {
            mChartView.repaint();       
        }
    }
    
    
    @Override
    protected void onDestroy() {
        if (mTimerTask != null) {
            mTimerTask.cancel();
        }
        if (mTimer != null) {
            mTimer.cancel();
        }
        super.onDestroy();
    }
    
    
    
    protected void updateChart() {      
    
        mCurrentSeries.add(mX, mX*mX);
        mX++;
    
        // Update the chart by repaint()
        if (mChartView != null) {
            mChartView.repaint();
        }
    }
    
    
    /**
     * A TimerTask class
     *
     */
    private class MyTimerTask extends TimerTask {
        @Override
        public void run() {
            updateChart();
        }
    }
    
    
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button_plot_start:
            // "Start" button clicked
    
            // Cancel current timer and timer task if existed
            if (mTimerTask != null ) {
                mTimerTask.cancel();
            }
            if (mTimer != null) {
                mTimer.cancel();
            }
    
            mTimer = new Timer();
            mX = 0;
            // Clear current X-axis
            mCurrentSeries.clear();
            mRenderer.clearXTextLabels();
    
                        mTimerTask = new MyTimerTask();
    
            // Delay 100(0.1s), interval is 3000 (3s)
            mTimer.schedule(mTimerTask, 100, 3000);
    
            break;
    
        case R.id.button_plot_stop:
            // "Stop" button clicked
    
            // Cancel current timer and timer task
            if (mTimerTask != null) {
                mTimerTask.cancel();
            }
            if (mTimer != null) {
                mTimer.cancel();
            }
            break;
        }
    
    }
    

    嘿@Wenshan thanx作为你的例子,你能告诉我如何在AChartEngine中使用条形图吗