2013-05-19 6 views
0

! [Введите описание изображения здесь] [1] Я использую achartengine для построения графиков в android, и я хочу добавить начальную дату окончания, как и в snapshoot.Make enable этот код с датой и сохранить data.Achar двигатель в основном используют для графики так помочь мэй, как достичь этогоЯ использую двигатель achart и хочу добавить начальную и конечную дату

public class MainActivity extends Activity { 

private GraphicalView mChart; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    openChart(); 
} 

private void openChart(){ 

    int count = 5; 
    Date[] dt = new Date[5]; 
    for(int i=0;i<count;i++){ 
     GregorianCalendar gc = new GregorianCalendar(2012, 10, i+1); 
     dt[i] = gc.getTime(); 
    } 

    int[] visits = { 2000,2500,2700,2100,2800}; 
    int[] views = {2200, 2700, 2900, 2800, 3200}; 

    // Creating TimeSeries for Visits 
    TimeSeries visitsSeries = new TimeSeries("Visits"); 

    // Creating TimeSeries for Views 
    TimeSeries viewsSeries = new TimeSeries("Views"); 

    // Adding data to Visits and Views Series 
    for(int i=0;i<dt.length;i++){ 
     visitsSeries.add(dt[i], visits[i]); 
     viewsSeries.add(dt[i],views[i]); 
    } 

    // Creating a dataset to hold each series 
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 

    // Adding Visits Series to the dataset 
    dataset.addSeries(visitsSeries); 

    // Adding Visits Series to dataset 
    dataset.addSeries(viewsSeries); 

    // Creating XYSeriesRenderer to customize visitsSeries 
    XYSeriesRenderer visitsRenderer = new XYSeriesRenderer(); 
    visitsRenderer.setColor(Color.WHITE); 
    visitsRenderer.setPointStyle(PointStyle.CIRCLE); 
    visitsRenderer.setFillPoints(true); 
    visitsRenderer.setLineWidth(2); 
    visitsRenderer.setDisplayChartValues(true); 

    // Creating XYSeriesRenderer to customize viewsSeries 
    XYSeriesRenderer viewsRenderer = new XYSeriesRenderer(); 
    viewsRenderer.setColor(Color.YELLOW); 
    viewsRenderer.setPointStyle(PointStyle.CIRCLE); 
    viewsRenderer.setFillPoints(true); 
    viewsRenderer.setLineWidth(2); 
    viewsRenderer.setDisplayChartValues(true); 

    // Creating a XYMultipleSeriesRenderer to customize the whole chart 
    XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer(); 

    multiRenderer.setChartTitle("Visits vs Views Chart"); 
    multiRenderer.setXTitle("Days"); 
    multiRenderer.setYTitle("Count"); 
    multiRenderer.setZoomButtonsVisible(true); 

    // Adding visitsRenderer and viewsRenderer to multipleRenderer 

    multiRenderer.addSeriesRenderer(visitsRenderer); 
    multiRenderer.addSeriesRenderer(viewsRenderer); 

    // Getting a reference to LinearLayout of the MainActivity Layout 
    LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container); 

    // Creating a Time Chart 
    mChart = (GraphicalView) ChartFactory.getTimeChartView(getBaseContext(), dataset,   multiRenderer,"dd-MMM-yyyy"); 

    multiRenderer.setClickEnabled(true); 
    multiRenderer.setSelectableBuffer(10); 

    // Setting a click event listener for the graph 
    mChart.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Format formatter = new SimpleDateFormat("dd-MMM-yyyy"); 

      SeriesSelection seriesSelection = mChart.getCurrentSeriesAndPoint(); 

      if (seriesSelection != null) { 
       int seriesIndex = seriesSelection.getSeriesIndex(); 
       String selectedSeries="Visits"; 
       if(seriesIndex==0) 
        selectedSeries = "Visits"; 
       else 
        selectedSeries = "Views"; 

       // Getting the clicked Date (x value) 
       long clickedDateSeconds = (long) seriesSelection.getXValue(); 
       Date clickedDate = new Date(clickedDateSeconds); 
       String strDate = formatter.format(clickedDate); 

       // Getting the y value 
       int amount = (int) seriesSelection.getValue(); 

       // Displaying Toast Message 
       Toast.makeText(
        getBaseContext(), 
        selectedSeries + " on " + strDate + " : " + amount , 
        Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

     // Adding the Line Chart to the LinearLayout 
     chartContainer.addView(mChart); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
} 
![Here is a image ][2] 

http://apps.opera.com/editimg/working_hours_android_os.png

+1

Пожалуйста, перепишите свой вопрос. Я не понимаю, чего вы пытаетесь достичь. – mrres1

+0

(http://apps.opera.com/editimg/working_hours_android_os.png) что я хочу, нажмите на этот URL. Мне нужна только дата интеграции. – buddy9

+0

@ buddy9: Проверьте мой ответ. – George

ответ

0

чтобы добавить minumim и максимальные сроки в оси х (если это то, что вы хотите) :

multiRenderer.setXLabels(0); //in order to define custom labels 

multiRenderer.setXAxisMin(initial_date.size()); 
multiRenderer.setXAxisMax(final_date.size()); 

, где final_date должен иметь дату после последней даты.

UPDATE:

Вы должны использовать: multiRenderer.addXTextLabel(1,"10/04");

И вы можете цикл (при условии, даты список который содержит даты):

for (int i=0;i<dates.size();i++){ 
    multiRenderer.addXTextLabel(i,dates.get(i)); 
} 

Но вы должны использовать multiRenderer.setXLabels (0); перед этим, чтобы определить ваши метки.

+0

Итак, похоже, что вы наконец поняли решение, которое я вам предоставил некоторое время назад: http://stackoverflow.com/questions/16418225/dates-in-x-axis-are-superimposed-plot-shows-the-last-entered -data-2-times-whe –

+0

@ Dan: Я понял, что с первого раза, но проблема в том, что это не сработало для меня. Сообщение все еще открыто, я не нашел решения. – George

+0

@ buddy9: Ваше приветствие! (Если ответ вас охватывает, вы можете принять его) – George

Смежные вопросы