2017-02-28 128 views
1

最初图形从-10到10,但我希望当用户向右滚动评估值和图形“增长” 。有没有任何听众。 我的意思是,当用户滚动到右侧,然后我添加更多的点作为函数,总是有一个x的值。当用户向右或向左滚动时,该图形将自行构建。MPandroidchart - 我想添加更多的点,当用户向上或向下滚动或向右或向左

+0

你能否解释一下你的意思做的**值进行评估**。 –

+0

我编辑了问题。@ AyushBansal –

+0

尝试使用ChartGesture侦听器。这里的链接https://github.com/PhilJay/MPAndroidChart/wiki/Interaction-with-the-Chart#gesture-callbacks –

回答

3
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     linechart = (LineChart) findViewById(R.id.chart); 
     new Random(0).nextInt(); 
     linechart.setHighlightPerDragEnabled(true); 
     linechart.setScaleEnabled(true); 
     linechart.setPinchZoom(true); 
     linechart.setDrawGridBackground(false); 
     linechart.getDescription().setEnabled(false); 
     linechart.setOnChartGestureListener(new GestureListener()); 

     LineData lineData = new LineData(); 
     lineData.setValueTextColor(Color.WHITE); 
     linechart.setData(lineData); 

     Legend legend = linechart.getLegend(); 
     legend.setForm(Legend.LegendForm.LINE); 
     legend.setTextColor(Color.WHITE); 

     XAxis xaxis = linechart.getXAxis(); 
     xaxis.setDrawGridLines(true); 
     xaxis.setTextColor(Color.WHITE); 
     xaxis.setTextSize(15f); 
     xaxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
     YAxis yaxis = linechart.getAxisLeft(); 
     yaxis.setTextColor(Color.WHITE); 
     yaxis.setTextSize(15f); 
     yaxis = linechart.getAxisRight(); 
     yaxis.setTextColor(Color.WHITE); 
     yaxis.setTextSize(15f); 
     linechart.invalidate(); 
    } 

    private void addEntry(int number) { 
     data = linechart.getData(); 

     if (data != null) 
     { 
      ILineDataSet set = data.getDataSetByIndex(0); 

      if (set == null) { 
       set = createSet(); 
       data.addDataSet(set); 
      } 
      data.addEntry(new Entry(data.getDataSetByIndex(0).getEntryCount(), number), 0); 
      data.notifyDataChanged(); 
      linechart.notifyDataSetChanged(); 

     } 
    } 

    private LineDataSet createSet() { 

     LineDataSet set = new LineDataSet(null, ""); 
     set.setCubicIntensity(0.0f); 
     set.setAxisDependency(YAxis.AxisDependency.RIGHT); 
     set.setColor(ColorTemplate.getHoloBlue()); 
     set.setCircleColor(ColorTemplate.getHoloBlue()); 
     set.setDrawValues(false); 
     set.setLineWidth(2f); 
     set.setCircleSize(4f); 
     set.setFillAlpha(65); 
     set.disableDashedLine(); 
     return set; 

    } 
    class GestureListener implements OnChartGestureListener { 

     @Override 
     public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) { 

      addEntry(//add your entries here); 
     } 

     @Override 
     public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) { 
      linechart.moveViewToX(data.getEntryCount()); 

     } 

     @Override 
     public void onChartLongPressed(MotionEvent me) { 

     } 

     @Override 
     public void onChartDoubleTapped(MotionEvent me) { 

     } 

     @Override 
     public void onChartSingleTapped(MotionEvent me) { 

     } 

     @Override 
     public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY) { 

     } 

     @Override 
     public void onChartScale(MotionEvent me, float scaleX, float scaleY) { 

     } 

     @Override 
     public void onChartTranslate(MotionEvent me, float dX, float dY) { 

     } 
    } 

尝试了这一点

+0

Thx为你的时间我会在晚上尝试。是否有任何方法可以删除linedataset中两点之间的“线条”,我问这是因为在绘制1/xa线条的图形时,会在y轴后的最后一个点和第y轴,这是不正确的。我怎样才能检测点是否像在坦克图的情况下无限大。所有其他图形都完美绘制。 Thx为你提供帮助。 –

+0

,我可以删除特定linedataset的传说吗? –

+0

您可以删除Legend。从我所知道的情况来看,Legend是为图表指定的,而不是针对linedataset。如果我错了,请提供一个链接,以便我可以更新自己:) –

相关问题