【问题标题】:Can I draw a simple paint pie chart like this?我可以像这样画一个简单的油漆饼图吗?
【发布时间】:2014-10-07 14:22:00
【问题描述】:

我不是在寻找任何花哨的东西。我曾尝试遵循有关饼图和条形图的教程,但很多教程并未遵循我的应用程序的指南。在我的应用程序中,在我的一个片段布局中,我想简单地绘制一个包含两个值的饼图。

简单到 -

画圆

(%value) 的圆圈是红色的。 (other%value) 的圆圈是蓝色的。

不能这样吗?

【问题讨论】:

    标签: android layout fragment pie-chart


    【解决方案1】:

    当其他人提供它时,无需做腿部工作。

    我强烈推荐 HoloGraphLibrary。每当我需要制作饼图时,我都会使用它。
    https://bitbucket.org/danielnadeau/holographlibrary/wiki/Home

    它非常易于使用,而且看起来很棒。

    【讨论】:

      【解决方案2】:

      如果你想要的只是你描述的图表,那么我认为添加任何库都是大材小用。这个非常简单的例子应该会给你一些想法。 setPercentage() 方法设置红色区域的大小;其余的将是蓝色的。请注意,没有实现异常处理,百分比应在 0 到 100 之间,包括 0 到 100。

      public class MainActivity extends Activity
      {
          SimplePieChart pie;
      
          @Override    
          protected void onCreate(Bundle savedInstanceState) 
          {
              super.onCreate(savedInstanceState);
      
              pie = new SimplePieChart(this);
              pie.setPercentage(65);
              setContentView(pie);
          }
      
          public class SimplePieChart extends View
          {
              private RectF rect = new RectF();
              private Paint paint = new Paint();      
              private int percentage;
      
              public SimplePieChart(Context context)
              {
                  this(context, null);
              }
      
              public SimplePieChart(Context context, AttributeSet attrs)
              {
                  super(context, attrs);
                  paint.setStyle(Paint.Style.FILL_AND_STROKE);
              }
      
              public void setPercentage(int percentage)
              {
                  this.percentage = percentage;
                  invalidate();
              }
      
              public int getPercentage()
              {
                  return percentage;
              }
      
              @Override
              protected void onSizeChanged(int w, int h, int oldw, int oldh)
              {
                  super.onSizeChanged(w, h, oldw, oldh);
                  if (w > h)
                  {
                      rect.set(w / 2 - h / 2, 0, w / 2 + h / 2, h);
                  }
                  else
                  {
                      rect.set(0, h / 2 - w / 2, w, h / 2 + w / 2);
                  }
              }
      
              @Override
              protected void onDraw(Canvas canvas)
              {
                  super.onDraw(canvas);
      
                  canvas.drawColor(Color.WHITE);
      
                  paint.setColor(Color.RED);
                  canvas.drawArc(rect, 0, 360 * percentage / 100, true, paint);
      
                  paint.setColor(Color.BLUE);
                  canvas.drawArc(rect, 360 * percentage / 100, 360 - 360 * percentage / 100, true, paint);
              }               
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-02
        • 2017-12-02
        • 2012-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        相关资源
        最近更新 更多