Draw a line in aChartEngine

I would like the vertical cursor to appear where I touch the area of ​​the chart. the textual representation associated with this line will display the value of the bar, the value of the y axis of the point in it. and when I move my finger left-right while holding my finger [left or right movement], this vertical cursor then moves accordingly, and the text view also follows, but displays the value of the Y axis to the new location (s) as it moves.

I see that GraphicalView has a touch list that I can register to receive callbacks - but I don’t know how to use it from now on. I also manage to associate touchevent with some kind of gesture maker. But how to draw a vertical cursor line that overlays on top of the current chart?

Another problem that I am facing is that in the onTuuch method when returning true I cannot get the values ​​mChart.getCurrentSeriesAndPoint (); always return Null, but if I change the return value to False, I can get the values, but I can not access ontuch again.

This is my code.

    mChart.setOnTouchListener(new View.OnTouchListener() {
               @Override
               public boolean onTouch(View v, MotionEvent event) {
                   if (event.getAction() == MotionEvent.ACTION_CANCEL) {

                       dataset.removeSeries(dataset.getSeriesCount()-1);
                       multiRenderer.removeSeriesRenderer(GraficaCuatro);
                    }
                    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
                        multiRenderer.setPanEnabled(false);
                        multiRenderer.setZoomEnabled(false);
                        SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();


                           if(seriesSelection != null)
                           {
                               Toast.makeText(
                                        getActivity().getBaseContext(),"Hola",
                                        Toast.LENGTH_SHORT).show();
                           }
                        XYSeries Line = new XYSeries("");
                        Line.add(event.getX()/1.5,minValue);
                        Line.add(event.getX()/1.5,maxValue);
                        dataset.addSeries(Line);    
                        multiRenderer.addSeriesRenderer(GraficaCuatro);
                    }
                    if (event.getAction() == MotionEvent.ACTION_MOVE) {

                           dataset.removeSeries(dataset.getSeriesCount()-1);
                           multiRenderer.removeSeriesRenderer(GraficaCuatro);
                           XYSeries Line = new XYSeries("");
                           Line.add(event.getX()/1.5,minValue);
                           Line.add(event.getX()/1.5,maxValue);
                           dataset.addSeries(Line); 
                           multiRenderer.addSeriesRenderer(GraficaCuatro);

                    }
                       if (event.getAction() == MotionEvent.ACTION_UP) {

                           dataset.removeSeries(dataset.getSeriesCount()-1);
                           multiRenderer.removeSeriesRenderer(GraficaCuatro);
                        }
                   mChart.repaint();
                  return true;
               }
            });

I would definitely like that.

dwef
(source: subirimagenes.com )

Please, I need help!

: onTouch, True; onTouch toRealPoint(); SeriesSelection , true false, .

            mChart.setOnTouchListener(new View.OnTouchListener() {
               @Override
               public boolean onTouch(View v, MotionEvent event) {
                   SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint();
                   double[]values = mChart.toRealPoint(0);
                   if(seriesSelection != null)
                   {
                       if (event.getAction() == MotionEvent.ACTION_CANCEL) {
                           dataset.removeSeries(dataset.getSeriesCount()-1);
                           multiRenderer.removeSeriesRenderer(GraficaCuatro);
                        }
                       if (event.getAction() == MotionEvent.ACTION_DOWN) {

                           XYSeries Line = new XYSeries("");
                           Line.add(seriesSelection.getXValue(),minValue);
                           Line.add(seriesSelection.getXValue(),maxValue);
                           dataset.addSeries(Line); 
                           multiRenderer.addSeriesRenderer(GraficaCuatro);
                       }
                       if (event.getAction() == MotionEvent.ACTION_MOVE) {

                           dataset.removeSeries(dataset.getSeriesCount()-1);
                           multiRenderer.removeSeriesRenderer(GraficaCuatro);
                           XYSeries Line = new XYSeries("");
                           Line.add(seriesSelection.getXValue(),minValue);
                           Line.add(seriesSelection.getXValue(),maxValue);
                           dataset.addSeries(Line); 
                           multiRenderer.addSeriesRenderer(GraficaCuatro);
                    }
                       if (event.getAction() == MotionEvent.ACTION_UP) {

                           dataset.removeSeries(dataset.getSeriesCount()-1);
                           multiRenderer.removeSeriesRenderer(GraficaCuatro);
                        }
                   }

                   mChart.repaint();
                  return true;
               }
            });
+5
2

, , .

chart.getCurrentSeriesAndPoint() , , . , , , -. , :

renderer.setSelectableBuffer(100);

, :

chartView.setOnClickListener(...);

, AChartEngine, .

:. , . chartView.toRealPoint() .

+1

         mChart = (GraphicalView) ChartFactory.getLineChartView(getActivity().getBaseContext(), dataset, multiRenderer);
        mChart.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                MotionEvent motionEvent = MotionEvent.obtain(
                        event.getDownTime(), 
                        event.getEventTime(), 
                        MotionEvent.ACTION_DOWN, 
                        event.getX(), 
                        event.getY(), 
                        event.getMetaState()
                        );
                mChart.onTouchEvent(motionEvent);
                double[]values = mChart.toRealPoint(0);
                for(int i = 0; i < dataset.getSeriesCount(); i++)
                {
                    try
                    {
                        if((int)values[0] < dataset.getSeriesAt(i).getItemCount())
                        {
                            //float value = (float) dataset.getSeriesAt(i).getY((int)values[0]);
                            //Log.d("", "");
                        }
                    }
                    catch (Exception e) {
                        // TODO: handle exception
                    }
                }
                if (event.getAction() == MotionEvent.ACTION_CANCEL) {
                    dataset.removeSeries(dataset.getSeriesCount()-1);
                    multiRenderer.removeSeriesRenderer(GraficaCuatro);
                }
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    XYSeries Line = new XYSeries("");
                    Line.add(values[0],minValue);
                    Line.add(values[0],maxValue);
                    dataset.addSeries(Line);    
                    multiRenderer.addSeriesRenderer(GraficaCuatro);
                }
                if (event.getAction() == MotionEvent.ACTION_MOVE) {

                    dataset.removeSeries(dataset.getSeriesCount()-1);
                    multiRenderer.removeSeriesRenderer(GraficaCuatro);
                    XYSeries Line = new XYSeries("");
                    Line.add(values[0],minValue);
                    Line.add(values[0],maxValue);
                    dataset.addSeries(Line);    
                    multiRenderer.addSeriesRenderer(GraficaCuatro);

                }
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    dataset.removeSeries(dataset.getSeriesCount()-1);
                    multiRenderer.removeSeriesRenderer(GraficaCuatro);
                }

                mChart.repaint();
                return true;
            }
        });
0

All Articles