2010-10-31 23 views
28

Mi aplicación requiere una biblioteca de gráficos y estoy usando una biblioteca de gráficos achartengine. Mi aplicación requiere que el gráfico sea solo el 50% de la pantalla y otra parte se use para mostrar otra información.Android: estoy usando la biblioteca AChartEngine para gráficos, pero no puedo integrar la vista gráfica de achartengine con android xml?

¿Es posible tener un archivo de recursos xml para las API de gráficos de achartengine y cómo hacerlo?

Traté de encontrar un ejemplo pero no lo encontré. ¿Es compatible o no?

+0

¿Por qué tiene que estar en xml? – Falmarri

+0

He personalizado el archivo de recursos xml para definir mi diseño ... Así que he agregado el diseño lineal vacío en el archivo xml y en el código Java agregué una vista gráfica de achartengine a este diseño lineal vacío ... esto resolvió mi problema .. – pitnal

+0

I recientemente encontré un tutorial muy bueno para AChartEngine: http://coffeedrivendevelopment.wordpress.com/2012/01/17/achartengine-xy-date-plot-example/ Espero que ayude a alguien más también en el futuro :) – Ahmed

Respuesta

45

Esta es una pregunta frecuente para AChartEngine. La aplicación de demostración AChartEngine está disponible para descargar aquí: AChartEngine demo

En el código fuente de la demostración, puede ver un ejemplo sobre cómo incrustar un gráfico en una vista existente.

Básicamente, en el archivo descriptor de actividad .xml, hemos definido lo siguiente como un marcador de posición para el gráfico. Por supuesto, otros componentes de la interfaz de usuario van de la mano con este diseño:

chartdemo/diseño/xy_chart.xml cerca de la línea 27

<LinearLayout 
    android:id="@+id/chart" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:orientation="horizontal" /> 

se define una variable local:

chartdemo/src /org.achartengine.chartdemo.demo.chart/XYChartBuilder.java cerca de la línea 68

private GraphicalView mChartView; 

creamos una instancia en el método onResume() de la actividad:

chartdemo/src/org.achartengine.chartdemo.demo.chart/XYChartBuilder.java cerca de la línea 163

protected void onResume() { 
    super.onResume(); 
    if (mChartView == null) { 
    LinearLayout layout = (LinearLayout) findViewById(R.id.chart); 
    mChartView = ChartFactory.getLineChartView(this, mDataset, 
mRenderer); 
    layout.addView(mChartView, new LayoutParams 
(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
    ... 
    } else { 
    mChartView.repaint(); 
    } 
} 

Siempre que los nuevos datos se añade (cuando el usuario presiona el botón "Añadir" en nuestro caso, se añade un nuevo punto en la serie actual y:

chartdemo/src/org.achartengine.chartdemo.demo.chart/XYChartBuilder.java cerca Línea 147

if (mChartView != null) { 
    mChartView.repaint(); 
} 
+0

Hola Dan , En la codificación anterior, mChartView es Graphicalview, pero los resultados de CharFactory.get ... son Intent. Entonces, ¿cómo es posible almacenar el intento en una vista gráfica? ¿lo explicarás? Ok gracias pitnal .. lo tengo .. Tengo la solución gracias mucho .. Thx – Lakshmanan

+1

ya que esto ayudó. Por favor, tenga en cuenta que la integración de un código de demostración como "MultipleTemperatureChart" (obtener 2 eje Y por ejemplo) en un proyecto existente requiere no olvidar agregar "en el manifiesto. xml, incluso si la ruta de acceso de java lib está correctamente definida. De lo contrario, se obtendrá un error fatal en la primera llamada como: java.lang.NoClassDefFoundError: [Lorg.achartengine.chart.PointStyle; También agregué el cambio de nombre de "lib" a "libs" como se explica (aquí) [http://stackoverflow.com/a/9886768/461212] – hornetbzz

+0

@Dan hola cómo agregar nuestro propio diseño a la vista de repertorio ... – NagarjunaReddy

16

Hay dos conjuntos de API en ChartFactory. Por ej. getLineChartView() y getLineChartIntent(). Entonces, el primero se usa para obtener una vista gráfica que se puede agregar a un diseño personalizado y luego se usa para obtener la intención. En el ejemplo anterior, Dan ha usado getLineChartView() API que devuelve GraphicalView.

+0

Gracias u .. .Es muy útil para mí ..... – Taruni

8

Puedes escribir tu xml así ...

<LinearLayout 
android:layout_below="@+id/btn" 
android:id="@+id/chart" android:orientation="horizontal" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:layout_weight="1"> 

</LinearLayout> 

y el fragmento de código Java es

protected void onResume() { 
     super.onResume(); 
     if (mChartView == null) { 
     LinearLayout layout = (LinearLayout) findViewById(R.id.chart); 
     mChartView = ChartFactory.getBarChartView(this,getBarDemoDataset(values),renderer,Type.DEFAULT); 
     layout.addView(mChartView); 


     } else { 
     mChartView.repaint(); 
     } 
    } 
+1

cómo agregar mi propio diseño a nuestra vista de chartengin .. – NagarjunaReddy

2

Así que aquí es un lugar autosuficiente para encontrar todo sobre AChartEngine. Que incluye enlace para descargar,

  1. achartengine-1.1.0-demo-source.zip The AChartEngine 1.1.0 demo project source code. May 15 May 15 168 KB 8149
  2. achartengine-1.1.0-javadocs.zip The AChartEngine 1.1.0 javadoc documentation. May 15 May 15 374 KB 3610
  3. achartengine-1.1.0.jar The AChartEngine 1.1.0 binary build library. May 15 May 15 117 KB 5264

Que son las últimas por ahora (mientras se publica esta respuesta). Ahora sigue estos sencillos pasos con el fin de añadir nuevo archivo gráfico:

  • Descargar y añadir achartengine-1.1.0.jar a la sección lib de su proyecto
  • Ahora haga clic con la derecha en el archivo y agregarlo para construir camino, como en la imagen

    Add jar to your project

  • Ahora, como definen en las respuestas anteriores, añadir siguiente código a su clase:

    private GraphicalView mChartView; 
    private XYMultipleSeriesDataset dataset; 
    private XYMultipleSeriesRenderer renderer; 
    private BarChart.Type type; 
    
    
    protected void onResume() { 
         super.onResume(); 
         if (mChartView == null) { 
         LinearLayout layout = (LinearLayout) findViewById(R.id.chart); 
         /*getBarChartView(android.content.Context context, XYMultipleSeriesDataset dataset, XYMultipleSeriesRenderer renderer, BarChart.Type type) 
          Creates a bar chart view.*/ 
         mChartView = ChartFactory.getBarChartView(this, dataset, renderer, type);//tView(this,getBarDemoDataset(values),renderer,Type.DEFAULT); 
         layout.addView(mChartView); 
         } else { 
         mChartView.repaint(); 
         } 
        } 
    
    • Para obtener detalles sobre cualquier clase de AChartEngineAPI, descarga achartengine-1.1.0-javadocs.zip y abierto haciendo clic en index.html

    • achartengine-1.1.0-demo-source.zip será útil durante el desarrollo de deepar adicional donde puede tomar referencia para todos los gráficos

+0

@ hola cómo agregar nuestro propio diseño nuestro gráfico engin .. – NagarjunaReddy

Cuestiones relacionadas