如何在Android中绘制饼图

前端之家收集整理的这篇文章主要介绍了如何在Android中绘制饼图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的 Android应用程序中绘制一个饼图.
你能建议我一个简单的方法吗?
我为此写了一个视图类,但不令人满意.所以,如果你告诉我一个好的和高性能的图表库,我将不胜感激.

解决方法

从下载jar

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

将jar添加到项目lib文件夹.还有开发人员提供的示例.您可以根据需要检查并修改相同的内容.

还有一个演示@

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

文件

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

例:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent"
  4. android:orientation="vertical" >
  5.  
  6. <LinearLayout
  7. android:id="@+id/chart"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:layout_weight="1"
  11. android:orientation="horizontal" >
  12. </LinearLayout>
  13.  
  14. </LinearLayout>

活动类

  1. public class AChartEnginePieChartActivity extends Activity {
  2.  
  3. private static int[] COLORS = new int[] { Color.GREEN,Color.BLUE,Color.MAGENTA,Color.CYAN };
  4.  
  5. private static double[] VALUES = new double[] { 10,11,12,13 };
  6.  
  7. private static String[] NAME_LIST = new String[] { "A","B","C","D" };
  8.  
  9. private CategorySeries mSeries = new CategorySeries("");
  10.  
  11. private DefaultRenderer mRenderer = new DefaultRenderer();
  12.  
  13. private GraphicalView mChartView;
  14.  
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.main);
  19.  
  20. mRenderer.setApplyBackgroundColor(true);
  21. mRenderer.setBackgroundColor(Color.argb(100,50,50));
  22. mRenderer.setChartTitleTextSize(20);
  23. mRenderer.setLabelsTextSize(15);
  24. mRenderer.setLegendTextSize(15);
  25. mRenderer.setMargins(new int[] { 20,30,15,0 });
  26. mRenderer.setZoomButtonsVisible(true);
  27. mRenderer.setStartAngle(90);
  28.  
  29. for (int i = 0; i < VALUES.length; i++) {
  30. mSeries.add(NAME_LIST[i] + " " + VALUES[i],VALUES[i]);
  31. SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
  32. renderer.setColor(COLORS[(mSeries.getItemCount() - 1) % COLORS.length]);
  33. mRenderer.addSeriesRenderer(renderer);
  34. }
  35.  
  36. if (mChartView != null) {
  37. mChartView.repaint();
  38. }
  39.  
  40. }
  41.  
  42. @Override
  43. protected void onResume() {
  44. super.onResume();
  45. if (mChartView == null) {
  46. LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
  47. mChartView = ChartFactory.getPieChartView(this,mSeries,mRenderer);
  48. mRenderer.setClickEnabled(true);
  49. mRenderer.setSelectableBuffer(10);
  50.  
  51. mChartView.setOnClickListener(new View.OnClickListener() {
  52. @Override
  53. public void onClick(View v) {
  54. SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
  55.  
  56. if (seriesSelection == null) {
  57. Toast.makeText(AChartEnginePieChartActivity.this,"No chart element was clicked",Toast.LENGTH_SHORT).show();
  58. }
  59. else {
  60. Toast.makeText(AChartEnginePieChartActivity.this,"Chart element data point index "+ (seriesSelection.getPointIndex()+1) + " was clicked" + " point value="+ seriesSelection.getValue(),Toast.LENGTH_SHORT).show();
  61. }
  62. }
  63. });
  64.  
  65. mChartView.setOnLongClickListener(new View.OnLongClickListener() {
  66. @Override
  67. public boolean onLongClick(View v) {
  68. SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();
  69. if (seriesSelection == null) {
  70. Toast.makeText(AChartEnginePieChartActivity.this,"No chart element was long pressed",Toast.LENGTH_SHORT);
  71. return false;
  72. }
  73. else {
  74. Toast.makeText(AChartEnginePieChartActivity.this,"Chart element data point index "+ seriesSelection.getPointIndex()+ " was long pressed",Toast.LENGTH_SHORT);
  75. return true;
  76. }
  77. }
  78. });
  79. layout.addView(mChartView,new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
  80. }
  81. else {
  82. mChartView.repaint();
  83. }
  84. }
  85. }

猜你在找的Android相关文章