Come disegnare un grafico a torta in android

Vorrei disegnare un grafico a torta nella mia applicazione android. Vi prego di suggerire un modo per farlo in modo semplice? Ho scritto una class di visualizzazione per questo scopo, ma non è soddisfacente. Quindi vorrei apprezzare se mi dica una biblioteca di grafici di buone e elevate performance.

  • NumberFormatException sul numero di string valido
  • Spazi superficiali sotto CoordinatorLayout in DrawerLayout
  • Elimina l'animation di row di elenco di liste Android
  • È la mia batteria di scarico Android?
  • in android, anteprima della telecamera in streaming su una vista
  • Integrare roboelectric con studio android con gradle dà sempre il pacchetto org.junit non esiste errore
  • WindowManager con animation (è ansible?)
  • Android: Come modificare la dimensione di text in un field EditText?
  • Android Spanned, SpannedString, Spannable, SpannableString e CharSequence
  • Ottieni giorno della settimana da GregorianCalendar
  • Posso get qualche efficienza dichiarando membri appropriati "statici" in attività Android
  • All'interno di un'applicazione, quale è il modo migliore per passare oggetti personalizzati tra le attività?
  • 6 Solutions collect form web for “Come disegnare un grafico a torta in android”

    Scarica il jar da

    http://www.achartengine.org/content/download.html

    Aggiungere il jar alla cartella di progetti lib. Esiste anche un esempio fornito dagli sviluppatori. È ansible controllare e modificare lo stesso desiderato.

    C'è anche una demo @

    http://www.achartengine.org/content/demo.html

    I documenti

    http://www.achartengine.org/content/javadoc/org/achartengine/chart/PieChart.html

    Esempio:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/chart" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal" > </LinearLayout> </LinearLayout> 

    La class Attività

     public class AChartEnginePieChartActivity extends Activity { private static int[] COLORS = new int[] { Color.GREEN, Color.BLUE,Color.MAGENTA, Color.CYAN }; private static double[] VALUES = new double[] { 10, 11, 12, 13 }; private static String[] NAME_LIST = new String[] { "A", "B", "C", "D" }; private CategorySeries mSeries = new CategorySeries(""); private DefaultRenderer mRenderer = new DefaultRenderer(); private GraphicalView mChartView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mRenderer.setApplyBackgroundColor(true); mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50)); mRenderer.setChartTitleTextSize(20); mRenderer.setLabelsTextSize(15); mRenderer.setLegendTextSize(15); mRenderer.setMargins(new int[] { 20, 30, 15, 0 }); mRenderer.setZoomButtonsVisible(true); mRenderer.setStartAngle(90); for (int i = 0; i < VALUES.length; i++) { mSeries.add(NAME_LIST[i] + " " + VALUES[i], VALUES[i]); SimpleSeriesRenderer renderer = new SimpleSeriesRenderer(); renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]); mRenderer.addSeriesRenderer(renderer); } if (mChartView != null) { mChartView.repaint(); } } @Override protected void onResume() { super.onResume(); if (mChartView == null) { LinearLayout layout = (LinearLayout) findViewById(R.id.chart); mChartView = ChartFactory.getPieChartView(this, mSeries, mRenderer); mRenderer.setClickEnabled(true); mRenderer.setSelectableBuffer(10); mChartView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint(); if (seriesSelection == null) { Toast.makeText(AChartEnginePieChartActivity.this,"No chart element was clicked",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(AChartEnginePieChartActivity.this,"Chart element data point index "+ (seriesSelection.getPointIndex()+1) + " was clicked" + " point value="+ seriesSelection.getValue(), Toast.LENGTH_SHORT).show(); } } }); mChartView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint(); if (seriesSelection == null) { Toast.makeText(AChartEnginePieChartActivity.this,"No chart element was long pressed", Toast.LENGTH_SHORT); return false; } else { Toast.makeText(AChartEnginePieChartActivity.this,"Chart element data point index "+ seriesSelection.getPointIndex()+ " was long pressed",Toast.LENGTH_SHORT); return true; } } }); layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } else { mChartView.repaint(); } } } 

    In alternativa, se non si desidera utilizzare le librerie di terze parti, è ansible utilizzare questa formula per get punti sul cerchio, dato raggio r :

     x = r * Math.cos(2 * Math.PI) //This will give you r y = r * Math.sin(2 * Math.PI) //This will give you 0 

    Per altri punti del cerchio devi modificare l'argomento coseno, ad esempio:

     x = r * Math.cos(2 * Math.PI / 6) //This will give you r/2 y = r * Math.sin(2 * Math.PI / 6) //This will give you r*sqrt(3/2) 

    Se si desidera compilare l'integer cerchio con un passo fissa n:

     for(int i=0;i<n;i++) { x = r * Math.cos(2 * Math.PI * i / n) y = r * Math.sin(2 * Math.PI * i / n) //Draw PointF(x,y) } 

    Un'altra biblioteca è PAcPie Char, puoi dare un'occhiata:

    https://github.com/marshallino16/PacPieChart-Android

    Sto ancora scrivendo, ma alless, è un inizio

    Penso che il tuo migliore amico è aChartEngine .
    È facile da usare e fornisce una vasta gamma di grafici da visualizzare.

    Esempio di grafico a torta:

    immettere qui la descrizione dell'immagine

    Se non si desidera utilizzare una libreria di terze parti, prova a provare il module di esempio google. Essi forniscono un esempio per disegnare il grafico a torta nella loro documentazione di disegno personalizzato.

    Qui puoi trovare la documentazione e il codice di esempio

    GraphView è una libreria per Android per creare in modo programmato diagrammi flessibili e graziosi. È facile da comprendere, da integrare e da personalizzare.

    tellmehow.co

    Ha supportto tipi di grafici:

    1. Line Grafici
    2. Grafici a barre
    3. Punti Grafici
    4. o implementare i propri tipi personalizzati.

    Aggiungi dipendenza gradle:

     compile 'com.jjoe64:graphview:4.2.1' 

    Aggiungi vista al layout:

     <com.jjoe64.graphview.GraphView android:layout_width="match_parent" android:layout_height="200dip" android:id="@+id/graph" /> 

    Aggiungere alcuni dati:

     GraphView graph = (GraphView) findViewById(R.id.graph); LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(new DataPoint[] { new DataPoint(0, 1), new DataPoint(1, 5), new DataPoint(2, 3), new DataPoint(3, 2), new DataPoint(4, 6) }); graph.addSeries(series); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.