我可以像这样画一个简单的油漆饼图吗?
Posted
技术标签:
【中文标题】我可以像这样画一个简单的油漆饼图吗?【英文标题】:Can I draw a simple paint pie chart like this? 【发布时间】:2014-10-07 14:22:00 【问题描述】:我不是在寻找任何花哨的东西。我曾尝试遵循有关饼图和条形图的教程,但很多教程并未遵循我的应用程序的指南。在我的应用程序中,在我的一个片段布局中,我想简单地绘制一个包含两个值的饼图。
简单到 -
画圆
(%value) 的圆圈是红色的。 (other%value) 的圆圈是蓝色的。
不能这样吗?
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于我可以像这样画一个简单的油漆饼图吗?的主要内容,如果未能解决你的问题,请参考以下文章